私はinstance_variableの作成を自動的に反映するように、ハッシュ(ネストされたハッシュ)からattr_readerを生成しようとしています。ここRuby:attribute_accessorを動的に生成します
私がこれまで持っているものです。
data = {:@datetime => '2011-11-23', :@duration => '90', :@class => {:@price => '£7', :@level => 'all'}}
class Event
#attr_reader :datetime, :duration, :class, :price, :level
def init(data, recursion)
data.each do |name, value|
if value.is_a? Hash
init(value, recursion+1)
else
instance_variable_set(name, value)
#bit missing: attr_accessor name.to_sym
end
end
end
しかし、私は:(
あなたは私の新しい親友です!!!!それはちょうど働く、とてもシンプルです... Rubyは魔法です:)そしてあなたは星です:)(私はしばらくのために私は幸せです) –
もっと簡単な質問があります。アクセサー名のハッシュを含むので、my_class.class.priceなどを呼び出すことができます。 –
まず、 'class'は予約済みのキーワードです。使用しないでください。ここでのコメントの2番目の質問は、この特定の質問の範囲を超えています。新しい質問は、属性アクセサーではなく、再帰などを扱うので、始めることもできます。 (PS、最善の答えを受け入れることを忘れないでください) – rdvdijk