Я понял, что вы пытаетесь добавить дополнительный список опций.(Пожалуйста, исправьте меня, если я ошибаюсь.) Для этого просто добавьте элемент.Затем в своем коде проверьте, был ли предоставлен хэш:
class MyClass::Subclass < Struct.new(:model1, :model2, :options)
def method1
if self.options && self.options["need_this"]
p 'need this'
end
end
end
x = MyClass::Subclass.new(:x, :y, {'need_this' => 'yesido'})
x.method1 # => 'need this'
Вы указываете Struct
параметры в виде символов (отсюда и ваша ошибка), и вы можете передавать любые типы аргументов, которые хотитедля них - в том числе ни одного вообще.Таким образом, хотя вы не можете указать значение по умолчанию, вы можете проверить, было ли предоставлено значение;если нет, то в этом случае options
будет nil
.В приведенном мною примере проверяется, был ли предоставлен хеш для options
, и если да, была ли включена опция need_this
в хеш.
Здесь Рубин док на Struct
.Если вы прочитали обзор и документацию по методу new
, у вас должно быть четкое представление о синтаксисе Struct
.