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

Ruby on Rails detect changes in attributes in update

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

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

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

我尝试的是@user.foo_changed?,但只要 foo 哈希值发生任何变化,它就会给出 true,但我希望它仅在 age 更改时为 true。我怎样才能做到这一点?

Ruby on Rails 提供一些方法来做到这一点:

object.attribute_changed?

例如:

User.first.name_changed?

你试过吗?

@user.age_changed?

您可以找到更多 here

尝试:

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