检查是否新创建了记录

时间:2013-08-25 01:41:22

标签: ruby-on-rails ruby

我无法弄清楚如何检查是否新保存了记录。现在我正在使用

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

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

2 个答案:

答案 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类。