attribute
metode kelas dari Ohm::Model
mendefinisikan metode pengakses dan mutator untuk atribut bernama:
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
Jadi ketika Anda mengatakan attribute :foo
, Anda mendapatkan metode ini secara gratis:
def foo # Returns the value of foo.
def foo=(value) # Assigns a value to foo.
Anda dapat menggunakan send
untuk memanggil metode mutator seperti ini:
@ohm_obj.send((att + '=').to_sym, val)
Jika Anda benar-benar ingin mengatakan @ohm_obj[att] = val
maka Anda dapat menambahkan sesuatu seperti berikut ke OhmObj
. Anda kelas:
def []=(att, value)
send((att + '=').to_sym, val)
end
Dan Anda mungkin ingin versi pengakses juga mempertahankan simetri:
def [](att)
send(att.to_sym)
end