- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用这段代码:
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/
我是一名优秀的程序员,十分优秀!