我尝试在输入记录之前搜索我的数据库,方法是这样做:
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)
问题是我得到一个未定义的方法异常!
在输入相同的记录之前是否有其他方法可以搜索相同的记录?
答案 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命名方法的一个很好的用例。