Rails 3检查属性是否改变?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

在Rails 3更新之前,需要检查一个属性块是否已经改变。

我知道我可以使用类似的东西

if @user.street1 != params[:user][:street1]
  then do something....
end

但是那段代码将会非常长。有更清洁的方法吗?

提问于
用户回答回答于

查看ActiveModel :: Dirty(默认情况下可在所有型号上使用)。该文档非常好,但它可以让你做的事情如:

@user.street1_changed? # => true/false
用户回答回答于

这就是我解决检查多个属性更改问题的方法。

attrs = ["street1", "street2", "city", "state", "zipcode"]

if (@user.changed & attrs).any?
  then do something....
end

扫码关注云+社区