ruby on rails - मक्खी पर Virtus.model से विस्तार करते समय बूलीयन विशेषता सहायक विधियों का उपयोग करें



ruby-on-rails ruby-on-rails-4 (1)

सबसे अधिक शायद आपके प्रोजेक्ट में एक और मणि है जो एक शीर्ष-स्तरीय Boolean वर्ग को परिभाषित करता है और यह बूलियन विशेषता विधियों के साथ संघर्ष करता है मोगॉयड, उदाहरण के लिए, ऐसा करने के लिए जाना जाता है ऐसे मामले में, वर्तुक रीडमेम ने सुझाव दिया है कि Axiom::Types::Boolean विशेषता का Axiom::Types::Boolean प्रकार इसके बजाय।

हालांकि, जब मैंने इसे करने की कोशिश की, तो इससे मदद नहीं मिली मेरा मानना ​​है कि README वास्तव में गलत है, समस्या # 234 टिप्पणी में सही प्रकार की जा रही है: Virtus::Attribute::Boolean

एक पूर्ण काम उदाहरण:

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 

मान लीजिए कि मेरे पास बूलियन एट्रिब्यूट active साथ वर्तुस मॉडल User active :

class User
  include Virtus.model 
  attribute :active, Boolean, default: false, lazy: true
end

तो मैं एक सहायक विधि active? उपयोगकर्ता उपयोगकर्ता सकता active? :

User.new.active? # => false
User.new(active: true).active? # => true

लेकिन जब मैं Virtus.model से extend करने extend प्रयास करता extend और उड़ने पर एक बूलीयन विशेषता को परिभाषित करता extend :

class User; end
user = User.new
user.extend(Virtus.model)
user.attribute(:active, Axiom::Types::Boolean, default: false, lazy: true)
user.active = true

और एक सहायक विधि active? उपयोग करें active? मुझे NoMethodError अपवाद मिलता है।

user.active? # => NoMethodError: undefined method `active?' for

क्या इस स्थिति में सहायक विधियों का उपयोग करने की कोई संभावना है?