2

おそらくループを使用して、Rubyでこれを書くよりエレガントな方法はありますか?

def save_related_info
  update_column(:sender_company_name, user.preference.company_name)
  update_column(:sender_address, user.preference.address)
  update_column(:sender_telephone, user.preference.telephone)
  update_column(:sender_email, user.preference.email)
  update_column(:sender_url, user.preference.url)
  update_column(:sender_vat_number, user.preference.vat_number)
  update_column(:sender_payment_details, user.preference.payment_details)
end

助けてくれてありがとう。

4

3 に答える 3

1

最初の推測は、キーをリストに入れ、値をリストに入れてから、ループを使用することです。このようなもの:

keys = ['key1', 'key2', 'key3', 'key4']
values = [val1, val2, val3, val4]
keys.each_index do |i|
 update_column(keys[i], values[i])
end

そのアプローチの欠点は、values配列内の要素の順序がキーの順序に適合する必要があることです。配列の代わりにハッシュを使用することを避けることができます。コードは次のようになります。

data = { "key1" => val1, "key2" => val2, "key3" => val3 };
data.each do |key, value|
 update_column(keys, values)
end
于 2013-08-10T11:53:21.133 に答える