【发布时间】:2012-01-11 23:17:35
【问题描述】:
我为 User 类创建了一个观察者(如下)。我知道调用了 before_save 方法,并且知道正在输入 new_record 条件,但是从未保存新记录...我是否缺少 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
【问题讨论】:
标签: ruby-on-rails-3 observer-pattern