0
私はUserクラスのObserverを作成しました(下記)。私はbefore_saveメソッドが呼び出されていることを知っています、そして、私はnew_record条件が入力されていることを知っていますが、新しいレコードは保存されません...私はbefore_saveコールバックにとって基本的な何かを欠いていますか?このオブザーバbefore_saveが正しく動作しない原因は何ですか?
コントローラに保存(プットによって生成されたエラーカウントがゼロである)ように見える:
Rubyでdef create
@user = User.new(params[:user])
if @user.save
#UserMailer.registration_confirmation(@user).deliver
redirect_to root_url, :notice=>"Signed Up!"
else
puts @user.errors.count
render "new"
end
end
class UserObserver < ActiveRecord::Observer
observe :user
def before_save(user)
if user.new_record?
puts 'HELLLLLLLLLLP'
#todo make a confirmation code generator
user.confirmationcode='1234'
user.confirmed=false
else
if user.email_changed?
user.confirmationcode='123'
user.confirmed=false
end
end
end
def after_save(user)
if user.confirmed=false
UserMailer.confirm_registration(user).deliver
end
end
end
Doh ...ええ、私はそれを忘れました...私はリファクタリングでショットを与えるでしょう。 – Webjedi
スタイルの主題について... before_saveの最後の行をuser.validのようにしていますか?容認できることは何ですか? – Webjedi
私は今までそれが終わったのを見たことはないと思っていますが、私の頭の上から外れない理由は考えられません。 – Emily