Рельсы сохраняют активную форму записи через ассоциации

#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. Я пытаюсь заставить ее работать, я обновлю комментарий с помощью моих новых настроек