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
。