attr_accessor_with_default :used, false
Или, если вы хотите использовать метод инициализации, вы можете определить обратный вызов after_initialize
def after_initialize
@used = false
end
Использование attr_accessor_with_default
с литералом объекта (например, attr_accessor_with_default :used, false
) небезопасно для использования с любыми изменяемыми объектами. В частности, это означает, что различные экземпляры вашего класса будут иметь один и тот же объект в качестве значения по умолчанию. Это похоже на попытку использовать переменную класса (@@my_var
), где вы хотите переменную экземпляра (@my_var
). Если вы хотите использовать изменяемый объект (например, String
, Array
или Hash
), вы должны использовать синтаксис блока:
attr_accessor_with_default(:used) { Array.new }