0
我已经为User类创建了一个Observer(见下文)。我知道before_save方法正在调用,我知道new_record条件正在进入,但新的记录永远不会被保存...我错过了before_save回调的基础吗?什么是防止这个观察者before_save无法正常工作?
控制器中保存的样子(在puts产生的错误计数是零):
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 2012-01-13 22:43:28
关于风格的主题......使before_save的最后一行与user.valid类似吗?一个可以接受的事情? – Webjedi 2012-01-13 22:48:05
我不认为我曾经看到过这件事,但我想不出有什么理由不能脱离我的头顶。 – Emily 2012-01-13 22:51:29