मेरे पास एक मूल्यांकन मॉडल है। मूल्यांकन के कई स्कोर हैं। जब भी कोई नया मूल्यांकन बनाया जाता है, तो प्रत्येक उपयोगकर्ता के लिए स्कोर रिकॉर्ड बनाया जाता है जिसके लिए मूल्यांकन की आवश्यकता होती है (वर्तमान विधि के लिए नीचे देखें, मैं इसे करने के लिए उपयोग कर रहा हूं।) इसलिए, उदाहरण के लिए, 40 स्कोर रिकॉर्ड एक बार में बनाए जा सकते हैं। मूल्यांकन स्वामी तब उपयोगकर्ता के स्कोर के साथ प्रत्येक स्कोर रिकॉर्ड अपडेट करता है।रेल 3, कस्टम कच्चे एसक्यूएल सम्मिलन कथन
मैं कच्चे एसक्यूएल का उपयोग करना चाहता हूं क्योंकि प्रत्येक डालने का अपना लेनदेन होता है और धीमा होता है।
मैं एक बड़े पैमाने पर डालने बयान कच्चे एसक्यूएल का उपयोग करते हुए निम्नलिखित कन्वर्ट करने के लिए करना चाहते हैं:
def build_evaluation_score_items
self.job.active_employees.each do |employee|
employee_score = self.scores.build
employee_score.user_id = employee.id
employee_score.save
end
end
यह कैसे किया जा सकता है पर कोई विचार? मैंने क्रिस हेल्ड की कॉफी संचालित साइट से कोड नमूना अनुकूलित करने का प्रयास किया है, लेकिन कोई पासा नहीं है।
मदद करने के इच्छुक किसी भी व्यक्ति के लिए धन्यवाद!
संपादित करें 1
मैं वर्तमान पद्धति के लेनदेन में लपेटा जाता है का उल्लेख उपेक्षित।
तो, अनिवार्य रूप से, मैं तो सब कुछ एक बयान (में डाला जाता है कोड ब्लॉक में जोड़ने के लिए कोशिश कर रहा हूँ ** यह कोड SNIPPIT क्रिस Heald कॉफी संचालित साइट है कि विषय पर चर्चा की ओर से है। मैं यह भी सवाल उठता पूछना होगा लेकिन पोस्ट> 3 साल पुरानी है):।
inserts = []
TIMES.times do
inserts.push "(3.0, '2009-01-23 20:21:13', 2, 1)"
end
sql = "INSERT INTO user_node_scores (`score`, `updated_at`, `node_id`, `user_id`)VALUES #{inserts.join(", ")}"
मैं अपने प्रयास है कि काम नहीं करते में से कुछ से कोड को दिखाने के लिए खुशी होगी ...
धन्यवाद फिर से!
ठीक है, मैं एक साथ कुछ है कि इसके बाद के संस्करण कोड जैसा दिखता है क्या करने के लिए के रूप में में पत्थर है लेकिन मैं ('evaluation_id' भाग के चारों ओर एक एसक्यूएल बयान अमान्य त्रुटि मिलती है। किसी भी विचार?
def build_evaluation_score_items
inserts = []
self.job.active_employees.each do |employee|
inserts.push "(#{self.id}, #{employee.id}, #{Time.now}, #{Time.now})"
end
sql = "INSERT INTO scores ('evaluation_id', `user_id`, 'created_at', `updated_at`)VALUES #{inserts.join(", ")}"
ActiveRecord::Base.connection.execute(sql)
end
किसी भी विचार ? एसक्यूएल ऊपर कोड त्रुटि पैदा
created_at हिस्सा मेरे लिए काम नहीं करता है, क्योंकि यह एक स्ट्रिंग है postgres को पार्स नहीं है पैदा कर रही है:
फिर आप की तरह कुछ लिख सकते हैं। 'ActiveRecord :: स्टेटमेंट इनवालिड: पीजी :: सिंटेक्स त्रुटि: त्रुटि:" 07 " लाइन 4: (1, 1, 100, 2017-02-20 07:00:56 +0000, 2017-02-20 पर या उसके आसपास वाक्यविन्यास त्रुटि 07 ... ' – Gambo