我无法弄清楚如何检查是否新保存了记录。现在我正在使用
If @item.save
@a = Item.where(“restaurant_id = ?”, params[:item][:user_id]).where(“created_at < ?”, 2.minutes.ago)
查询工作正常,但我想知道是否有更好的方法来检查记录是否刚创建。我正在调查ActiveModel :: Dirty,但是一旦保存了记录,:created_at_changed?将返回false。
答案 0 :(得分:11)
对于记录,Rails 4和5现在都具有此功能。
在Rails 4中,你可以这样做:
@item.previous_changes.key?('id')
在Rails 5中:
@item.id_previously_changed?
[注意:这假设您从不手动更新记录的ID。如果你是,你将需要更多类似的东西:]
@item.previous_changes.key?('id') && @item.previous_changes['id'][0].nil?
答案 1 :(得分:1)
我认为rails不提供任何检查方法。你可以实现自己的。
def recently_created?
Item.where("restaurant_id = ? AND created_at < ?", params[:items][:user_id], 2.minuted.ago)
end
如果您想要所有ActiveRecord模型,请将其添加到ActiveRecord :: Base类。