ruby 检查记录是否是新创建的

byqmnocz  于 2022-11-04  发布在  Ruby
关注(0)|答案(3)|浏览(152)

我不知道如何检查记录是否是新保存的。现在我正在使用

If @item.save
      @a = Item.where(“restaurant_id = ?”, params[:item][:user_id]).where(“created_at < ?”, 2.minutes.ago)

查询运行正常,但我想知道是否有更好的方法来检查记录是否刚创建。我正在查看ActiveModel::Dirty,但一旦保存了记录,:created_at_changed?将返回false。

r6l8ljro

r6l8ljro1#

为了记录在案,Rails 4和5现在都有这样的功能。
在Rails 4中,您可以执行以下操作:

@item.previous_changes.key?('id')

在Rails 5中:

@item.id_previously_changed?

[NOTE:此处假定您从不手动更新记录的ID。如果您手动更新记录的ID,则需要更类似于以下内容的内容:]

@item.previous_changes.key?('id') && @item.previous_changes['id'][0].nil?
wtzytmuj

wtzytmuj2#

我认为Rails没有提供任何方法来检查这个问题,你可以使用ActiveRecord实现你自己的方法。

def recently_created?
  Item.where("restaurant_id = ? AND created_at < ?", params[:items][:user_id], 2.minutes.ago)
end

如果您希望将其用于所有ActiveRecord模型,请将其添加到ActiveRecord::Base类中。

shyt4zoc

shyt4zoc3#

从Rails 6.1开始,您可以用途:

@item.previously_new_record?

相关问题