Глобализация3 и создание объекта на всех языках

У меня есть модель с именем Menu, которая имеет product_types, которые принадлежат ей.

При создании меню я хочу установить некоторые значения по умолчанию product_types:

У меня есть эта константа:

DEFAULTS = [ 
  { name_en: 'White bread', name_nl: 'Wit brood', name_fr: 'Pain blanc'},
  { name_en: 'Brown bread', name_nl: 'Bruin brood', name_fr: 'Pain brun' }
]

И это должно создать переводы, но в данный момент я получаю сообщение об ошибке:

"Вы не можете вызвать create, если родитель не сохранен"

def create_defaults
  ProductType::DEFAULTS.each do |pt|
    t = product_types.create
    t.translations.create(locale: 'en', name: pt[:name_en])
    t.translations.create(locale: 'nl', name: pt[:name_nl])
    t.translations.create(locale: 'fr', name: pt[:name_fr])
  end

Меню может быть на 3 языках (выбирается пользователем), и у пользователя также есть язык по умолчанию. Этот язык по умолчанию может быть голландский, английский или французский. Таким образом, возможно иметь голландского пользователя с языками меню на голландском и французском языках.

Код, который я также пробовал ранее (который не выдает ошибку msg) был:

 def create_defaults
   ProductType::DEFAULTS.each do |pt|
     t = product_types.create(name: pt[:name_en])
     t.translations.create(locale: 'nl', name: pt[:name_nl])
     t.translations.create(locale: 'fr', name: pt[:name_fr])
   end
 end

Проблема с этой процедурой: предположим, что пользователь по умолчанию настроен на голландский язык, а язык меню также установлен на голландский (никаких других языков). Тогда созданные по умолчанию типы появляются на английском...

1 ответ

Решение

Это делает трюк:

def create_defaults
  ProductType::DEFAULTS.each do |pt|
    t = product_types.create
    t.translations.build(locale: 'en', name: pt[:name_en])
    t.translations.build(locale: 'nl', name: pt[:name_nl])
    t.translations.build(locale: 'fr', name: pt[:name_fr])
    t.save
  end
end

При сохранении родительского объекта также сохраняются все дочерние объекты.

Другие вопросы по тегам