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