Ruby on Rails检测更新中属性的变化

时间:2016-09-13 09:10:35

标签: ruby-on-rails ruby ruby-on-rails-4.2

您好我有一个Rails应用程序,我想知道是否更改了哈希中发生的属性 让我解释一下我有@user

的参数
"foo"=> {"name"=> "name1", "age"=> "15", "height"=> "120"}

现在,当我只更改属性年龄时,我想知道年龄是否已更改

我尝试的是@user.foo_changed?但是只要foo散列发生任何变化,它就会生效,但我希望只有在年龄改变时才真实。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

尝试:

if @user.foo.age == params[:user][:foo][:age]
     # not changed
else
    # changed
end

@user.foo.age_changed?  # this will work in case foo is associated(nested) model with user and foo table has "age" field

答案 1 :(得分:0)

Ruby on Rails提供了一些方法来实现这一目标:

object.attribute_changed?

例如:

User.first.name_changed?

你试过这个吗?

@user.age_changed?

您可以找到更多here