【问题标题】:Check to see if record is newly created检查记录是否是新创建的
【发布时间】:2013-08-27 19:20:04
【问题描述】:

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

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

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

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

我不认为 rails 提供任何方法来检查这一点。您可以使用 ActiveRecord 实现自己的。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-10-09
      • 2013-09-01
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 2023-04-08
      相关资源
      最近更新 更多