0

次のハッシュがあります。

row = {:id => 1, :name => "Altus Raizen", :email => "altus@blarg.com"}

Personこれで、キーと同じ属性を持つ構造体ができましたrow:

Person = Struct.new(:id, :name, :email)

次のように、ハッシュPersonの値を使用してオブジェクトを動的に設定したいと考えています。row

person = Person.new
person.id = row[:id]
person.name = row[:name]
person.email = row[:email]

上記のコードは機能しますが、より洗練された方法、つまり属性を動的に設定する方法が必要です。どうすればいいですか?(実際には 9 つの属性があるため、上記のコードは、電話、住所などの他の属性に値を設定することを考慮すると、はるかに長くなり、「醜い」ものになります)。

4

2 に答える 2

7
person = Person.new
row.each_pair { |key, value| person.send("#{key}=", value) }
于 2013-05-30T14:38:15.913 に答える