2014-11-03 4 views
5

इसलिए यदि मैं बहुत तरह हैश की एक सरणी है: (माणिक शुरुआत)माणिक में हैश की सरणी के माध्यम से पुनरावृति

input = [ 

{"last_name"=>"Gay", "first_name"=>"Rudy", "display_name"=>"Rudy Gay", "position"=>"SF", "minutes"=>39, "points"=>25, "assists"=>6}, 
{"last_name"=>"Collison", "first_name"=>"Darren", "display_name"=>"Darren Collison", "position"=>"PG", "minutes"=>39, "points"=>14, "assists"=>4} 

] 

मैं सरणी के माध्यम से कैसे पुनरावृति होगी और साथ ही कुछ है करने के लिए प्रत्येक हैश के माध्यम से पुनरावृति करने के लिए

PLAYER1 = {display_name => "रूडी गे", "स्थिति" => "एस एफ"}

player2 = {display_name => "डैरेन कोलिसन", "स्थिति" => "पीजी": इस तरह }

क्या यह सोम होगा

input.each do |x| 
Player.create(name: x['display_name'], position: x['position'] 
end 

तरह ething (यह मानते हुए मैं एक खिलाड़ी मॉडल है)

वहाँ इस लक्ष्य को हासिल करने के लिए एक बेहतर तरीका है?

धन्यवाद!

+0

गायब पिछला ') 'के अलावा यह कोड सही है। समस्या क्या है? क्या आपको कोई त्रुटि मिल रही है? –

+0

हाय सिमोन, बस सोच रहा है कि ऐसा करने के लिए एक और अधिक रूबी तरीका है, या यदि कुछ और अधिक कुशल है। – meowmixplzdeliver

+0

इस उत्तर को देखें: http://stackoverflow.com/a/10022240/4178151। आप एक बड़ी डालने के लिए सीधे विधि बनाने के लिए हैश की उस सरणी को पास कर सकते हैं। – nikkon226

उत्तर

7

अपने इनपुट को देखते हुए:

input = [ 
    { "last_name"=>"Gay", ... }, 
    { "last_name"=>"Collison", ...} 
] 

तो उन कुंजियों (last_name, first_name, display_name) के सभी Player मॉडल में मौजूद हैं, तो आप सिर्फ कर सकते हैं:

input.each do |x| 
    Player.create(x) 
end 

create के बाद से एक में ले जाएगा असाइन करने के लिए गुणों का हैश। लेकिन, और भी बेहतर, तुम भी पुनरावृति करने की जरूरत नहीं: सब अगर आप इसे हैश की एक सरणी देना

Player.create(input) 

ActiveRecord उन के माध्यम से जाना जाएगा।

+0

धन्यवाद! क्या होगा यदि मैं अपने प्लेयर मॉडल और मेरी जॉइन टेबल (स्टेट मॉडल) के बीच हैश को विभाजित करना चाहता था तो प्लेयर.नाम = "डैरेन कॉलिसन" लेकिन अंक, सहायता, और स्टैट.एसिस्ट जैसे सामानों को बचाएं? (उम्मीद है कि समझ में आया) मेरे पास गेम, प्लेयर और स्टेट मॉडल है, जिसमें स्टेटस गेम और प्लेयर के बीच जुड़ने वाली तालिका है। – meowmixplzdeliver

+0

टिप्पणियों में इसे संबोधित करना मुश्किल है, और यह वास्तव में एक नया प्रश्न है। इसे एक शॉट दें, [एआर एसोसिएशन गाइड] पढ़ना (http://guides.rubyonrails.org/association_basics.html) और आप शायद बहुत करीब आ जाएंगे। कोई अन्य विवरण सिर्फ दोबारा पोस्ट करें और कोई निश्चित रूप से आपको बाकी तरीके से प्राप्त करेगा। –

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