2011-01-14 36 views
1

如何配置ActiveRecord以在Padrino應用程序中使用partial_updates?Padrino中的ActiveRecord部分更新

Customer < ActiveRecord::Base 
    after_update :check_name_change 

    private 
    def check_name_change 
    if name_changed? 
     # send mail notification for change of name. 
    end 
    end 
end 

考慮到用戶在數據庫中有其他屬性'name'和'country'。
當用戶更新名稱時,它會按預期發送電子郵件通知。但是,即使用戶更改國家(或任何其他)屬性,它也會發送名稱更改通知,這是不可接受的。

檢查日誌後,我發現國家的更新查詢正在進行全面更新,並設置了用戶記錄的所有屬性。像這樣的name_changed?方法返回true併發送名稱更改的通知電子郵件。

如果我把下面的行app.rb

ActiveRecord::Base.partial_updates = true 

我看不出有什麼差別。任何update_attribute調用仍會完整記錄更新。
是否有其他解決方案或解決方法?

回答

0

這與padrino不相關,但僅與活動記錄有關。

試試before_save。

+0

所以你的意思是活躍的記錄有這個問題?我正在使用活動記錄3.0.0,任何想法,如果這已被修復在更高版本? 您使用before_save的建議確實是一種解決方法,因爲我已經實現了它,但它只能在上述場景中使用。一般來說,我們不能總是使用before_save代替after_create。我的問題是特定於部分更新,我需要讓它工作。 – Vignesh 2011-03-04 18:56:27