Я пытаюсь создать класс Ruby, в котором метод initialize
принимает хэш опций. Затем у меня есть эти опции как attr_accessor
для класса. Теперь я мог бы сделать что-то вроде
class User
attr_accessor :name, :email, :phone
def initialize(options)
self.name = options[:name]
self.email = options[:email]
self.phone = options[:phone]
end
end
User.new(:name => 'Some Name', :email => 'some-name@some-company.com', :phone => 435543093)
но мне это не очень сухо. Вместо этого я хотел бы сделать
class User
attr_accessor :name, :email, :phone
def initialize(options)
options.each do |option_name, option_value|
# Does not work!!
self.send(option_name, '=', option_value)
# Does not work either!!
self.send(option_name, '=' + option_value)
end
end
end
User.new(:name => 'Some Name', :email => 'some-name@some-company.com', :phone => 435543093)
но я не могу заставить работать синтаксис!
Что я делаю не так?