Rails 4查找或创build方法不起作用

我有一个一对多的工作和公司之间的联系,它工作正常。 在工作表单视图中,我有具有自动完成function的公司名称的text_field。 自动完成工作正常,但是如果我在自动完成列表中不存在公司名称,则find_or_create_by不会创build新公司。

def company_name company.try(:name) end def company_name=(name) @company = Company.find_or_create_by(name: name) end 

请看看这个答案 。

曾经是

 @company = Company.find_or_create_by_name(name) 

在Rails 4中是现在的

 @company = Company.find_or_create_by(name: name) 

在Rails 4中做到这一点的另一种方法是:

 @company = Company.where(name: name).first_or_create 
 Company.find_or_create_by(name: name) 

它应该开箱即用。 唯一能阻止它创buildlogging的是validation错误。

尝试在rails console检查是否工作。 并检查validation错误。

 name = "YOUR TEXT FOR NAME ATTRIBUTE" c = Company.find_or_create_by(name: name) puts c.errors.full_messages 

这个方法在rails 4中已经被弃用了。

Rails4发布消息:

弃用基于旧式哈希的查找程序API。 这意味着以前接受“查找选项”的方法不再执行。

这是不赞成的方法,但它应该工作。 也许,Rails现在不支持它。

你可以得到更多的信息点击这里,并检查11.2 Deprecations