ruby on rails - Use métodos de ayuda de atributos booleanos cuando se extiende desde Virtus.model sobre la marcha
ruby-on-rails ruby-on-rails-4 (1)
Lo más probable es que haya otra gema en su proyecto que defina una clase Boolean
nivel superior y que entre en conflicto con los métodos de atributos booleanos. Mongoid, por ejemplo, se sabe que hace eso. En tal caso, Virtus README sugiere usar el tipo Axiom::Types::Boolean
del atributo en su lugar.
Sin embargo, cuando probé esto, no ayudó. Creo que el archivo README es incorrecto, el tipo correcto se menciona en el comentario del Issue # 234 : Virtus::Attribute::Boolean
.
Un ejemplo completo de trabajo:
class User; end
user = User.new
user.extend(Virtus.model)
user.attribute(:active,
Virtus::Attribute::Boolean, # <- note the type
default: false, lazy: true)
user.active = true
user.active?
#=> true
Digamos que tengo un User
modelo Virtus con un atributo booleano active
:
class User
include Virtus.model
attribute :active, Boolean, default: false, lazy: true
end
Entonces, ¿podría utilizar un método de ayuda active?
:
User.new.active? # => false
User.new(active: true).active? # => true
Pero cuando trato de extend
desde Virtus.model
y definir un atributo booleano sobre la marcha:
class User; end
user = User.new
user.extend(Virtus.model)
user.attribute(:active, Axiom::Types::Boolean, default: false, lazy: true)
user.active = true
y usar un método de ayuda active?
Me sale una excepción de NoMethodError
.
user.active? # => NoMethodError: undefined method `active?'' for
¿Hay alguna posibilidad de usar métodos de ayuda en esta situación?