Lassen Sie uns sagen, ich habe ein Virtus Modell User
mit einem boolean-Attribut active
:Verwenden Boolesche Attribut Methoden Helfer, wenn sie von Virtus.model on the fly erstreckt
class User
include Virtus.model
attribute :active, Boolean, default: false, lazy: true
end
Dann könnte ich Benutzer eine Hilfsmethode active?
:
User.new.active? # => false
User.new(active: true).active? # => true
Aber wenn ich versuche zu extend
von Virtus.model
und eine boolesche Attribut on the fly definieren:
class User; end
user = User.new
user.extend(Virtus.model)
user.attribute(:active, Axiom::Types::Boolean, default: false, lazy: true)
user.active = true
und verwenden Sie eine Hilfsmethode active?
Ich bekomme eine NoMethodError
ein bisschen Ausnahme.
user.active? # => NoMethodError: undefined method `active?' for
Gibt es eine Möglichkeit, Hilfsmethoden in dieser Situation zu verwenden?
ist 'user.active' auch geben Fehler? Ich meine ohne "?" –
@ Md.FarhanMemon, kein 'user.active' funktioniert gut. Es ist nur so, dass die Verwendung von 'active?' Auf diese Weise viel deutlicher aussieht und sich nicht von anderen booleschen Logikprüfungen in der Anwendung unterscheidet. – potashin
Ich sehe, was ist der volle Fehler btw? 'undefinierte Methode' aktiv? ' für .....? ' –