我有一个名为 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' }
]
这应该会创建翻译,但我现在收到一个错误消息:
“除非保存父级,否则您不能调用创建”
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
这个过程的问题是:假设用户的默认语言设置为荷兰语,并且菜单的语言也设置为荷兰语(没有其他语言)。然后默认创建的类型以英文显示...