2013-08-25 70 views
1

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

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

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

+1

退房这个问题的答案+:http://stackoverflow.com/questions/7842920/determine-if-activerecord-object-is-新或创建 – Mattherick

+0

甚至http://stackoverflow.com/questions/7842920/determine-if-activerecord-object-is-new-or-created – msbarnard

回答

1

我不认为铁轨提供任何方法来检查这一点。你可以实现你自己的。

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

如果你想要所有的ActiveRecord模型,将它添加到ActiveRecord :: Base类。

+0

感谢您的回答,并纠正我的语法。 – Ria

7

为了记录,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?