检查before_update过滤器中字段的值是否已更改

时间:2010-02-20 10:01:13

标签: ruby-on-rails ruby activerecord

我有一个数据库字段,我想存储我的密码。在我的模型中的before_create过滤器中,我调用加密函数并从明文保存到加密文本。

我现在也希望使用before_update进行加密,但前提是该值已更改。如何编写检查字段值是否已更改的条件?

2 个答案:

答案 0 :(得分:26)

如果该字段名为

object.name_changed?

将返回true。

答案 1 :(得分:4)

由于您通常不使用您要向表单公开的字段将密码存储在模型中,因此仅更新它unless password.blank?并且在字段“hashed_pa​​ssword”中具有真实密码就足够了你不会暴露在表格中。

感谢Ben(见下文)指出另外使用attr_protected保护您的加密密码,因此无法从表单直接访问/更新。 1