在创建之前检查Rails中是否存在记录

时间:2012-09-04 19:47:10

标签: ruby-on-rails ruby-on-rails-3

我尝试在输入记录之前搜索我的数据库,方法是这样做:

Product.update_or_create_by_name_and_date_and_applicationURL_and_server_and_addi_servers(app_name, app_date,url_app,server_name,addi_servers)

问题是我得到一个未定义的方法异常!

在输入相同的记录之前是否有其他方法可以搜索相同的记录?

2 个答案:

答案 0 :(得分:2)

您应该使用两个步骤:

#Suggestion 1
obj = Product.find_or_create_by_...


#Suggestion 2
obj = Product.find_or_initialize_by_...

obj.update_attributes hash_here

重读,您的问题,如果您尝试查找具有已知属性的对象,我无法真正了解您要更新的内容。无论如何,如果某些字段用于识别而某些字段用于更新,则您只需稍微调整我的答案。

答案 1 :(得分:0)

我会在你的模型中定义一个函数:类似

Product.find_by_everything

您可以写出搜索的所有参数,而不是使用长命名方法。

然后,如果返回nil,则创建产品。这似乎不是使用内置的activerecord命名方法的一个很好的用例。