У меня очень специфическая проблема, и я не могу найти решение для нее.Простите, если это слишком конкретно, но я не знаю, где еще спросить.
Я пытаюсь создать экземпляр модели, которая имеет has_many через ассоциации, но ассоциации has_many являются частьютаблица типа «основная» запись, в которой существует только 1 запись чего-либо (объединенная с таблицей соединения).
Я пытаюсь реализовать следующее:
Создать рецепт, используя acceptpts_nested_attributes_for с Ingredients,Ингредиент должен использоваться, только если он не найден в таблице ингредиентов.Однако, если он найден, я хочу использовать уже существующую запись.
Если нам нужен конкретный пример, то здесь:
Скажем, мы создаем рецепт "Чили", который состоит изфасоль, лук, говяжий фарш.Фасоль и лук являются совершенно новыми ингредиентами (их нет в таблице ингредиентов), но говяжий фарш уже существует в таблице.Вместо того, чтобы создавать другую запись из говяжьего фарша, я хочу использовать уже существующую запись из говяжьего фарша, найденную в таблице ингредиентов.
Как мне это сделать?
Я подумал, что, возможно, я мог бы использовать before save: :check_if_exists
вызов на модели Рецепта с check_if_exists
проверкой всех компонентов формы, существуют они или нет.Соответствующий код:
Модель рецепта
before_save :check_if_exists
def check_if_exists
self.ingredients.each do |ingredient|
if Ingredient.exists?(ingredient.name)
return ingredient
else
@ingredient = Ingredient.new(name: ingredient.name)
return @ingredient
end
end
end
Я знаю, что приведенный выше код - полная чушь, но, надеюсь, моя идея дойдет до конца.Я хотел бы использовать существующую запись, если она уже существует, в противном случае создайте новую.
Хотя я не могу обернуть голову, как это сделать.Любая помощь приветствуется!