У меня есть метод initialize
, который принимает хеш для установки некоторых переменных экземпляра.Это в основном то, что я пытаюсь сделать:
class Ad
DEFAULT_PAGE = 'index'.freeze
DEFAULT_CHANNEL = 'general'.freeze
DEFAULT_AREA = 'general'.freeze
attr_accessor :page, :area, :channel
def initialize args={}
@page = args[:page] || DEFAULT_PAGE
@area = args[:area] || DEFAULT_AREA
@channel = args[:channel] || DEFAULT_CHANNEL
end
# ...
end
Я видел совет, чтобы разрешить динамическую установку переменных экземпляра, но я не уверен, как также включить значения по умолчанию ...
def initialize args={}
args.each do |attr,val|
instance_variable_set("@#{attr}", val) unless val.nil?
end
end
Можно ли динамически ссылаться на константу?Или любые лучшие способы делать подобные вещи приветствуются!
... Я также понимаю, что attr_accessor
переменные могут быть установлены индивидуально.Но я просто хочу сделать это так.:)