ruby-on-rails ruby ruby-on-rails-4 boolean virtus

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?