0

それに属するproduct_typesを持つMenuという名前のモデルがあります。

メニューの作成時に、いくつかのデフォルトの 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' }
]

これで翻訳が作成されるはずですが、現時点では次のようなエラーが表示されます。

「親が保存されていない限り、作成を呼び出すことはできません」

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 つの言語 (ユーザーが選択可能) にすることができ、ユーザーにはデフォルトの言語もあります。このデフォルト言語は、オランダ語、英語、またはフランス語です。そのため、オランダ語とフランス語のメニュー言語を使用するオランダ人ユーザーがいる可能性があります。

私も以前に試したコード(エラーメッセージは表示されませんでした)は次のとおりです。

 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

この手順の問題点は次のとおりです。ユーザーのデフォルト言語がオランダ語に設定されていて、メニューの言語もオランダ語に設定されているとします (他の言語はありません)。次に、デフォルトで作成されたタイプが英語で表示されます...

4

1 に答える 1