我正在使用此代码:
item = Item.find_or_create_by(:name => title.strip)
if item.changed?
results.newItemsCount += 1
end
我想获取新创建的记录记录数。我希望.changed属性对于新创建的项目是真的,但看起来并非如此。代码的下一部分可能会修改项目,即使它不是新的,所以如果项目是新的,我真的需要在这里知道。
有没有办法判断记录是否是新记录?没有看到in the docs之类的东西。你认为只是设置标题(在构造函数中)将符合改变的条件,但似乎没有发生。
答案 0 :(得分:6)
我认为无法使用changed?
或persisted?
方法找到或创建调用。
相反,您可以通过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
回调。如果它是一个新项目,将触发此回调。你可以在这里进行操作。
希望有所帮助