如何正确使用before_save?

如何正确使用before_save?

问题描述:

我得到语法错误,如果我这样编码。
我该如何解决?如何正确使用before_save?

before_save :handle_invitation_code, if: :just_confirmed 

def just_confirmed? 
    confirmed_at_changed? && confirmed_at_was.nil? 
end 

def handle_invitation_code 
    ... 
end 
+1

错误信息是什么? – 2013-02-08 17:02:21

+2

为什么你会告诉我们你有一个错误,然后不告诉我们错误是什么?我们不是心灵的。 – meagar 2013-02-08 17:04:00

+0

您是否尝试过'before_save:handle_invitation_code,如果:'self.just_confirmed?'(是的是的,if语句是一个字符串,对于我当前在Rails 3.2.11中用于生成'before_save:set_name,if:'自身.name.nil?'') – MrYoshiji 2013-02-08 18:17:57

怎么样?

before_save :handle_invitation_code 

def just_confirmed? 
    confirmed_at_changed? && confirmed_at_was.nil? 
end 

def handle_invitation_code 
    if self.just_confirmed? 
    ... 
    end 
end 

或者你将不得不在just_confirmed?通过代码作为一个Proc给before_save

+0

我仍然得到未定义的方法'用于UsersController的before_save':类没有方法错误 – Foo 2013-02-08 17:05:11

+1

before_save是一个'ActiveRecord'回调..控制器继承自'ActionCo ntroller'没有那个回调。我想你需要'before_filter'。 – 2013-02-08 17:06:45

+0

谢谢。我只想在用户通过Devise确认邮件后才执行此方法。 – Foo 2013-02-08 17:08:58