2013-05-19 2 views
0

теперь у меня есть следующий в моем seeds.rbКак я могу создать_or_update в seeds.rb для переводов?

os = OrderStatus.find(1) 
os.translations.create(:status => "In aanmaak", :locale => "nl") 
os.translations.create(:status => "Creating", :locale => "en") 

Однако это создает двойники. Поэтому я попытался создать create_or_update вместо создания, но это, похоже, не поддерживается. Я использую globalize3

ответ

2

Основываясь на ваш комментарий Вы можете сделать следующее:

os = OrderStatus.find(1) 
os.translations.where(locale: "nl").first_or_create.update_attributes(status: "In aanmaak") 
os.translations.where(locale: "en").first_or_create.update_attributes(status: "Creating") 

Я не уверен, если есть более хороший способ написания, но вы можете создать свой собственный метод:

class Translation < ActiveRecord::Base 
    def first_or_update(locale, status) 
    where(locale: locale).first_or_create.update_attributes(status: status) 
    end 
end 

os.translations.first_or_update("en", "Creating") 
+0

Это работает, но проблема в том, что если я изменю статус на, например: os.translations.where (: status => "Creation",: locale => "en"). First_or_create У меня будет 2 английские переводы для этого OrderStatus – rept

+0

Вы всегда будете чан ge оба поля или один останется прежним? –

+0

Для каждого OrderStatus может существовать только 1 перевод на 1 языке, поэтому 1 для en 1 для nl ... Поэтому он должен искать язык и вставлять или обновлять текст. Таким образом, один останется одним и тем же (локаль). – rept

 Смежные вопросы

  • Нет связанных вопросов^_^