gpt4 book ai didi

ruby-on-rails - 有没有办法判断一条记录在使用 find_or_create_by 创建后是否是新的

转载 作者:数据小太阳 更新时间:2023-10-29 08:28:47 29 4
gpt4 key购买 nike

我正在使用这段代码:

item = Item.find_or_create_by(:name => title.strip)
if item.changed?
results.newItemsCount += 1
end

我想获取新创建的日志记录数。我希望 .changed 属性对于新创建的项目是正确的,但它看起来不是。代码的下一部分可能会修改该项目,即使它不是新的,所以我真的需要在这里知道该项目是否是新的。

有没有办法判断记录是否是新的?没看到类似的东西in the docs .您可能认为仅设置标题(在构造函数中)就可以视为已更改,但似乎并没有发生。

最佳答案

我认为使用 changed?persisted? 方法无法确定调用是 find 还是 create。

相反,您可以通过 find_or_initialize_by 来完成此操作。您可以在此处检查 persisted? 值以确定该项目是否是新的。如果它是假的,那么你就知道它是一个新文档。

item = Item.find_or_initialize_by(:name => title.strip)
unless item.persisted?
item.save
results.newItemsCount += 1
end

其他方法是您可以使用 after_create 回调。如果它是一个新项目,这个回调将被触发。您可以在这里进行操作。

希望对你有帮助

关于ruby-on-rails - 有没有办法判断一条记录在使用 find_or_create_by 创建后是否是新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8361474/

29 4 0
文章推荐: ruby-on-rails - 在 Mac OS X Lion 上安装 Ruby 1.9.3 和 Rails 3.1.3 时出错
文章推荐: ruby - 使用 Watir 将整个 html 导出到文本文档