检查记录是否是新创建的

6 浏览
0 Comments

检查记录是否是新创建的

我无法弄清楚如何检查记录是否是新保存的。目前我正在使用以下代码:\n

 如果 @item.save
      @a = Item.where("restaurant_id = ?", params[:item][:user_id]).where("created_at < ?", 2.minutes.ago)

\n这个查询工作得很好,但我想知道是否有更好的方法来检查记录是否刚刚创建。我查看了ActiveModel::Dirty,但一旦记录被保存,:created_at_changed? 将返回false。

0
0 Comments

最近创建的问题通常出现在需要检查记录是否是新创建的情况下。Rails框架本身并没有提供直接的方法来检查这一点,但是可以通过使用ActiveRecord来自己实现。

以上给出了一个示例代码,可以用于检查一个名为Item的模型实例是否是最近创建的。这个方法使用了ActiveRecord的where方法来查询满足特定条件的记录。具体来说,它查询了一个名为restaurant_id的字段等于params[:items][:user_id]的记录,并且它们的创建时间在2分钟之前。如果存在满足条件的记录,则说明该记录不是最近创建的。

如果你想要在所有的ActiveRecord模型中使用这个方法,可以将它添加到ActiveRecord::Base类中。这样,所有的模型都会继承这个方法,从而可以在任何模型实例上调用它来检查记录是否是最近创建的。

需要注意的是,这只是一个示例代码,具体的实现可能会根据具体的需求和数据模型进行调整。但是基本的思路是通过查询满足特定条件的记录来判断它们是否是最近创建的。

0
0 Comments

问题出现的原因:在Rails 6.1之前,我们无法直接检查记录是否是新创建的。

解决方法:从Rails 6.1开始,我们可以使用`.previously_new_record?`方法来检查记录是否是新创建的。

在之前的版本中,我们可能会遇到需要检查记录是否是新创建的情况,但是无法直接使用现有的方法。在这种情况下,我们可以使用下面的解决方法。

解决方法1:

def newly_created?(record)
  record.new_record? && !record.persisted?
end

解决方法2:

def newly_created?(record)
  record.id.nil?
end

以上两种解决方法都可以用来检查记录是否是新创建的,但是在Rails 6.1之后,我们可以直接使用`.previously_new_record?`方法,这样代码会更加简洁和直观。

在Rails 6.1中,我们可以使用`.previously_new_record?`方法来检查记录是否是新创建的。在之前的版本中,我们可以使用自定义的方法或者检查记录的id是否为nil来达到相同的目的。但是使用Rails 6.1提供的方法能够使代码更加简洁和易于理解。

0
0 Comments

Rails 4 和 Rails 5 现在都有这个功能。

在 Rails 4 中,可以使用.previous_changes.key?('id')来实现。

在 Rails 5 中,可以使用.id_previously_changed?来实现。

[注意:这假设你从未手动更新过记录的ID。如果有手动更新,你需要使用类似以下的代码:].previous_changes.key?('id') && .previous_changes['id'][0].nil?

问题的原因是想要检查记录是否是新创建的。解决方法是在 Rails 4 中使用.previous_changes.key?('id'),在 Rails 5 中使用.id_previously_changed?。如果手动更新过记录的ID,则需要使用.previous_changes.key?('id') && .previous_changes['id'][0].nil?

0