2013-08-31 5 views
6

एक MODEL1 enum_attr है एक ACCOUNT_TYPE है, तो मणि का उपयोग कर' enumerated_attributes ', मैं इस तरह के रूप मॉडल बनाया टी समझ में आता है कि जब मैं इस तरह के बीज के लिए मनमानी मॉडल 1 पूछता हूं (यह त्रुटि है जब मैं रूबिमाइन कंसोल में follwing कमांड चलाता हूं, लेकिन यह 2 त्रुटि के लिए 2 त्रुटि होती है, तो रेक डीबी: बीज के दौरान होती है):तर्क जब रिकॉर्ड पर सब के सब बुला की गलत संख्या जो

MODEL1.all.sample 

और

MODEL1.all 

मैं इस मिल:

Dealer Load (0.3ms) SELECT "MODEL1".* FROM "MODEL1S" 
ArgumentError: wrong number of arguments (2 for 1) 
from /.rvm/gems/[email protected]/gems/enumerated_attribute-0.2.16/lib/enumerated_attribute/integrations/active_record.rb:78:in `instantiate' 
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/querying.rb:45:in `block in find_by_sql' 
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/result.rb:21:in `block in each' 
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/result.rb:21:in `each' 
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/result.rb:21:in `each' 
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/querying.rb:45:in `map' 
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/querying.rb:45:in `find_by_sql' 
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/relation.rb:585:in `exec_queries' 
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/relation.rb:471:in `load' 
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/relation.rb:220:in `to_a' 
from /.rvm/gems/[email protected]/gems/activerecord-4.0.0/lib/active_record/relation/delegation.rb:49:in `sample' 
from (irb):7 
from /.rvm/gems/[email protected]/gems/railties-4.0.0/lib/rails/commands/console.rb:90:in `start' 
from /.rvm/gems/[email protected]/gems/railties-4.0.0/lib/rails/commands/console.rb:9:in `start' 
from /.rvm/gems/[email protected]/gems/railties-4.0.0/lib/rails/commands.rb:64:in `<top (required)>' 

मॉडल मैं बीज के (जहां रेक डाटाबेस के दौरान त्रुटि उत्पन्न होती है: बीज) कोशिश कर रहा हूँ है जैसे:

model2 = Fabricate(:MODEL2, name: "Any MODEL2 Name #{n}", cost: n, MODEL1: MODEL1.all.sample) 

MODEL2 मॉडल में

belongs_to :MODEL1 

और MODEL1 मॉडल में

has_many :MODEL2s 
प्रवास में

, MODEL2

t.references :MODEL1 
प्रवास में

, MODEL1

t.enum :account_type 

अगर वहाँ MODEL1 के लिए account_types निर्दिष्ट करने के लिए एक आसान तरीका है, तो कृपया मुझे बताएं, मैं सिर्फ करने की जरूरत है MODEL1.all.sample या MODEL1.all

+0

मैं अपने स्टैक ट्रेस के शीर्ष पर स्रोत कोड को देखा की जाँच (देखें https: // GitHub .com/jeffp/enumerated_attribute/blob/84221b872f7f71152994b212520c833742a263e3/lib/enumerated_attribute/integrations/active_record.rb) और वास्तव में लाइन 78 पर दो तर्कों के साथ एक विधि कॉल है, लेकिन मैं अपने जीवन के बारे में नहीं समझ सकता कि कैसे विधि कहा जा रहा है ('write_enumerated_attribute') को एक के साथ परिभाषित किया जा सकता था। –

+0

क्या MODEL1 के लिए अलग-अलग account_type को परिभाषित करना आसान होगा? मुझे लगता है कि यह एक समेकित विशेषता होना चाहिए, लेकिन यदि कोई समान समाधान है जो इस समस्या को उत्पन्न नहीं करता है, तो मुझे कोशिश करने में खुशी है? – JPEasy

+0

आपका मणि 0.2.16 है जबकि गीथूब पर यह 0.3.1beta है। अपने मणि को अपग्रेड करने का प्रयास कर सकते हैं? – j03w

उत्तर

1

लगता है कि आप रिलीज नोट्स से रेल 4 का उपयोग कर रहे हैं:

Model.all अब रिकॉर्ड की सरणी के बजाय ActiveRecord :: संबंध देता है। यदि आप वास्तव में एक सरणी चाहते हैं तो संबंध # to_a का उपयोग करें। कुछ विशिष्ट मामलों में, यह अपग्रेड करते समय टूटने का कारण बन सकता है।

तो स्टार्टर्स के लिए आप मॉडल पर to_a पर कॉल करना चाहते हैं। लेकिन क्या आप निश्चित हैं कि enumerated_attribute रेल 4 तैयार है?

आप postres उपयोग नहीं कर रहे हैं, तो आप postgres उपयोग कर रहे हैं मैं, बस validates_inclusion_of का उपयोग कर की सिफारिश करेंगे https://coderwall.com/p/azi3ka

संबंधित मुद्दे