可以说我有一个模特Product
。
有时我会得到一个包含新产品的文件,问题是其中某些产品可能已经输入到数据库中。
数据不包含任何唯一键,并且可以在不同字段中使用不同的结构。我所能做的就是根据我拥有的所有数据从数据库中选择一个,如果找到一种产品,则不要从文件中保存一个。
Product.where(:name => p.name, :desc => p.desc, :source => "some source", [more fields])
所以我的问题是,是否有更好的方法来检查记录是否已存在?
IMO并不是一个好主意,因为插入某个唯一的密钥而失败,但是也可以工作。
您可以使用存在吗?像这样的功能:
if Product.where(:name => p.name, :desc => p.desc, :source => "some source", [more fields])
# do something
else
# do something else
end
如果您的目标是创建一条不存在的新记录,也可以使用find_or_create_by:
Product.find_or_create_by(:name => p.name, :desc => p.desc, :source => "some source", [more fields])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句