2013-02-08 35 views
-1

我得到語法錯誤,如果我這樣編碼。
我該如何解決?如何正確使用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

回答

2

怎麼樣?

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