2011-01-14 39 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