У меня есть следующий код, который я использую, чтобы превратить коллекцию хешей в методы моих классов (что-то вроде активной записи).У меня проблема в том, что мой сеттер не работает.Я все еще новичок в Ruby и верю, что немного обернулся.
class TheClass
def initialize
@properties = {"my hash"}
self.extend @properties.to_methods
end
end
class Hash
def to_methods
hash = self
Module.new do
hash.each_pair do |key, value|
define_method key do
value
end
define_method("#{key}=") do |val|
instance_variable_set("@#{key}", val)
end
end
end
end
end
Методы созданы, и я могу читать их в своем классе, но их установка не работает.
myClass = TheClass.new
item = myClass.property # will work.
myClass.property = item # this is what is currently not working.