在Rails中提交后检查属性是否已更改

Nic*_*nto 4 activerecord ruby-on-rails ruby-on-rails-4

我知道在某种情况下或在模型保存之前使用dirtychanged?有用before_commit.保存模型后,previous_changes进行更改.哪个好.但,

如何查看控制器中是否更改了特定属性

def update
 @item = Item.find(params[:id])
if @item.update_attributes(item_params)
 # horray
 # check if the :name changed, if so do something about it
else
 # d'oh
end
end
Run Code Online (Sandbox Code Playgroud)

有没有比做更好的方式 !@item.previous_changes[:name].nil?

Sha*_*med 7

我不知道是否有更好的方法,但我会这样做:

if @item.previous_changes.has_key?('name')
  # Name has been changed.
end
Run Code Online (Sandbox Code Playgroud)