attribute
Ohm::Model
のクラスメソッド 名前付き属性のアクセサーメソッドとミューテーターメソッドを定義します:
def self.attribute(name)
define_method(name) do
read_local(name)
end
define_method(:"#{name}=") do |value|
write_local(name, value)
end
attributes << name unless attributes.include?(name)
end
したがって、attribute :foo
と言うと 、これらのメソッドは無料で入手できます:
def foo # Returns the value of foo.
def foo=(value) # Assigns a value to foo.
send
を使用できます このようにミューテイタメソッドを呼び出すには:
@ohm_obj.send((att + '=').to_sym, val)
本当に@ohm_obj[att] = val
と言いたい場合 次に、次のようなものをOhmObj
に追加できます。 クラス:
def []=(att, value)
send((att + '=').to_sym, val)
end
そして、おそらくアクセサバージョンも対称性を維持したいと思うでしょう:
def [](att)
send(att.to_sym)
end