2012-05-03 52 views
0

我在我的模型中的FF代碼:不能在before_save中修改變量嗎?

before_save :before_save_method 

attr_accessor :corrective_change 
attr_accessible :corrective_change 
attr_accessible :corrective_desc 

    private 
    def before_save_method 
     if corrective_change == 0 
     self.corrective_desc = corrective_desc_was 
     end 
    end 

然而,無論的corrective_change值的self.corrective_desc值仍然由用戶輸入的值更新。

所有變量的值都經過測試,我可以在記錄器中查看它們,因爲它們應該是正確的,但條件不起作用。

任何人都可以指出問題是什麼?

非常感謝。

回答

0

1)你確定corrective_change是一個整數而不是字符串? (比較INT到字符串=失敗)

2)這是一個新的記錄?如果是這樣corrective_desc_was可能不存在(它wouldnt在2.3,不知道3.X)

3)考慮嘗試這樣的:

def before_save_method 
    if self.corrective_desc_changed? && self.corrective_change == 0 
    self.corrective_desc = self.corrective_desc_was 
    else 
    logger.info "corrective_desc not changed or corrective_change != 0" 
    end 
end 

4)此外,如果它是糾正變化,那麼也許before_update會更適當的而不是before_save,因爲這將被稱爲創建也。