मुझे एक दिलचस्प समस्या है। मैं रूबी 1.9.2 और रेल 3.1.3 का उपयोग कर रहा हूँ।सरणी में रेल धक्का ऑब्जेक्ट बचाता है
मेरे पास 2 मॉडल हैं, सरलीकरण के लिए ग्राहकों और दुकानों का कहना है। स्टोर में कई ग्राहक हैं, और ग्राहक एक स्टोर से संबंधित है। मैं सभी ग्राहकों को एक स्टोर के लिए एकत्र करने की कोशिश कर रहा हूं, और कुछ और जगहों के लिए एक जगह बना रहा हूं जिसे मैं बाद में मूल्यों के साथ पॉप्युलेट कर सकता हूं। इसके बजाय, ग्राहक.save को तब कहा जाता है जब मुझे इसकी उम्मीद नहीं होती है।
store = Store.find(1)
customers_array = store.customers
random_array = Array.new
customers_count = customers_array.count + 1
(customers_count..2).each do |i|
customer = Customer.new
c.id = "#{i}000000000000"
random_array << customer # this line doesn't call customer.save
customers_array << customer # this line calls customer.save when store has customers
end
किसी कारण से जब ग्राहक को सरणी में धकेल दिया जाता है, तो ग्राहक.save कहा जाता है। ऐसा नहीं होता है यदि आप किसी सरणी को दबाते हैं तो एक सादा सरणी है और संबंध नहीं है।
मुझे एक कामकाज मिला, लेकिन मैं अभी भी सोच रहा हूं कि ऐसा क्यों होता है। वैकल्पिक हल:
store = Store.find(1)
initial_customers_array = store.customers
additional_customers_array = Array.new
customers_count = initial_customers_array.count + 1
(customers_count..2).each do |i|
customer = Customer.new
c.id = "#{i}000000000000"
additional_customers_array << customer
end
customers_array = initial_customers_array + additional_customers_array
उन लोगों के लिए जो समाधान ढूंढ रहे हैं और क्यों नहीं: संग्रह के बिना मॉडल बनाने के लिए संग्रह पर '' 'build''' का उपयोग करें: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods .html # मॉड्यूल-ActiveRecord :: संघ :: कक्षा विधि-लेबल-संग्रह – blu
मुझे विपरीत समस्या थी। मॉडल चश्मे में 'बिल्ड' का उपयोग करके, << काम नहीं कर रहा है। इस सवाल के जवाब बताते हैं क्यों नहीं। – CJBrew