Rails обновляют ассоциации - PullRequest
       1

Rails обновляют ассоциации

0 голосов
/ 24 октября 2018

Я хочу обновить ассоциацию внутри цикла

необходимо обновить каждый перевод с помощью хэш-атрибутов

  data => 
[{:name=>"string", :image_source_url=>"string", :locale=>:en},
{:name=>"string", :image_source_url=>"string", :locale=>:"en-CA"}, 
{:name=>"string", :image_source_url=>"string", :locale=>:"en-US"}, 
{:name=>"string", :image_source_url=>"string", :locale=>:fr}, 
{:name=>"string", :image_source_url=>"string", :locale=>:"fr-CA"}, 
{:name=>"string", :image_source_url=>"string", :locale=>:es}]

Итак, я попробовал

client = Client.find(2)
#Client has columns => {:name :image_source_url :locale}    

data.each do |attrs|
 client.translations.update(attrs)
end

, но он обновилсяя только с последней локалью, которая es

я хочу обновлять каждые client=>translation

с каждым полем данных, которое {:name=>"string", :image_source_url=>"string", :locale=>:es}

как это сделатькак я хочу?

1 Ответ

0 голосов
/ 24 октября 2018

Я думаю, вы хотите найти или инициализировать по локали каждого перевода, а затем обновить их.

data.each do |attrs|
  translation = client.translations.find_or_initialize_by(locale: attrs[:locale])

  # it's a good practice to not do mass assignment, if you are not permitting params. 
  translation.name = attrs[:name]
  translation.image_source_url = attrs[:image_source_url]
  translation.save
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...