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

时间:2015-04-25 12:10:07

标签: ruby-on-rails ruby-on-rails-4 activerecord

我知道在dirty情况下或在保存模型之前使用changed?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

有没有比做!@item.previous_changes[:name].nil?

更好的方法

2 个答案:

答案 0 :(得分:6)

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

if @item.previous_changes.has_key?('name')
  # Name has been changed.
end

答案 1 :(得分:1)

在Rails 5中,您可以使用saved_change_to_attribute?来检查特定的更改。