我知道在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?
答案 0 :(得分:6)
我不知道是否有更好的方法,但我会这样做:
if @item.previous_changes.has_key?('name')
# Name has been changed.
end
答案 1 :(得分:1)
在Rails 5中,您可以使用saved_change_to_attribute?
来检查特定的更改。