#ruby-on-rails #rails-activerecord
#ruby-on-rails #рельсы-activerecord
Вопрос:
У меня есть эти модели в моем приложении Rails. Мой вариант использования — многоязычные данные. Сначала я хочу сохранить языковую версию по умолчанию, тогда можно будет добавить другие языковые данные.
class Category < ApplicationRecord
has_many :category_versions
accepts_nested_attributes_for :category_versions, allow_destroy: true
end
class CategoriesVersion < ApplicationRecord
belongs_to :categories
has_many :categories_contents
has_one :langs
end
class CategoriesContent < ApplicationRecord
belongs_to :categories_versions
end
И я хотел бы сохранить запись с одной записью верхнего уровня с соответствующей записью в CategoriesVersion
и CategoriesContent
.
Используя данные из параметров и сгенерированный внутренний create
метод в контроллере.
Я получил первую и вторую таблицы, но я не знаю, как добавить атрибуты для третьей таблицы, вложенные во вторую, если это возможно. Таким образом, ассоциация из CategoriesVersion в CategoriesContent
category_data = { category: {
kind: "user",
featured_image: "test",
featured_image_title: "test",
editorial_id: nil,
category_versions_attributes: [
{lang_id: Lang.find_by_lang("francais").id},
{published: false},
{featured: false} #data["featured"] || false
]
}}
test = Category.create(category_data["category"])
Пожалуйста, какие-либо предложения?
Ответ №1:
Если я понимаю вашу проблему, я думаю, что accepts_nested_attributes_for — это конфигурация, которая вам нужна в ваших моделях для сохранения вложенных данных, просто сохраняя категорию.
Комментарии:
1. Спасибо! Это оно! Я протестирую его для записи более 3 таблиц, спасибо
2. Я пытаюсь заставить ее работать, я обновлю комментарий с помощью моих новых настроек