2013-08-25 68 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?