Rails 4 найти или создать методом не работает
У меня есть одна-много ассоциация между рабочими местами и компаниями, и она работает нормально. В представлении формы работы у меня есть текстовое поле для названия компании с функцией автозаполнения. Автозаполнение работает нормально, но find_or_create_by не создает новую компанию, если я помещаю название компании, которое не существует в списке автозаполнения.
def company_name
company.try(:name)
end
def company_name=(name)
@company = Company.find_or_create_by(name: name)
end
Ответы
Ответ 1
Пожалуйста, посмотрите этот ответ.
Что раньше было
@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
Ответ 2
Company.find_or_create_by(name: name)
Он должен работать из коробки. Единственное, что может помешать созданию записи, - это ошибки проверки.
Попробуйте в rails console
проверить, работает ли он.
Также проверьте ошибки проверки.
name = "YOUR TEXT FOR NAME ATTRIBUTE"
c = Company.find_or_create_by(name: name)
puts c.errors.full_messages
Ответ 3
Этот метод устарел в рельсах 4.
Сообщение о выпуске Rails4:
Устаревший API-интерфейс поиска, основанного на хеш-стиле. Это означает, что методы, ранее принявшие "параметры поиска", больше не выполняются.
Это устаревший метод, но он должен работать. Возможно, Rails теперь не поддерживает его.
Вы можете получить дополнительную информацию нажмите здесь и отметьте 11.2 Deprecations
.