SQLite3 का उपयोग कर एक रेल एप्लिकेशन में मैं फ़्लोटिंग वैल्यू एट्रिब्यूट वाले मॉडल में फ्लोट वैल्यू Float::INFINITY
और -Float::INFINITY
का उपयोग करना चाहता हूं। INSERT
Model.create!
का उपयोग कर क्वेरी चल रहा है यह ठीक काम करता प्रतीत होता है, क्योंकि Activerecord इस मामले में तैयार बयान का उपयोग करता है। हालांकि, जब मैं एक रिकॉर्ड foo.save
का उपयोग कर अद्यतन करने के लिए प्रयास करते हैं, ActiveRecord एक तैयार stament उपयोग नहीं करता है और सिर्फ सही क्वेरी में स्ट्रिंग Infinity
डालता है,रेल पर रूबी में अनंत फ्लोट का उपयोग
SQLite3::SQLException: no such column: Infinity
में जिसके परिणामस्वरूप इस को हल करने के लिए या करने के लिए एक रास्ता है मुझे मॉडल/डेटाबेस में तारों का उपयोग करने का सहारा लेना होगा?
रेल संस्करण 3.2.21
, sqlite3 संस्करण 1.3.10
संपादित करें। अभी के लिए मैं डेटाबेस प्रवास में string
लिए स्तंभ प्रकार बदल गया है और
serialize :property, Float
का उपयोग डेटाबेस में YAML-धारावाहिक तैरता स्टोर करने के लिए ActiveRecord बताने के लिए, Float::INFINITY
ठीक स्टोर करने के लिए अनुमति देता है।
नहीं, [IEEE754] (http://en.wikipedia.org/wiki/IEEE_floating_point) स्पष्ट रूप से उस मूल्य के प्रतिस्थापन के रूप में 9e999 जैसे अनंतता को परिभाषित करने के लिए बहुत बड़ी संख्या का उपयोग कर सकते हैं। + ∞ और -∞ नामक फ्लोट मान परिभाषित करता है। आपको इसे पीछे की ओर मिला, '1.0/0' को 'फ्लोट :: इन्फिनिटी' के रूप में परिभाषित किया गया है। '9e999' परिणामों में एक विशेषता को सेट करने के लिए 'फ़्लोट :: इन्फिनिटी' पर सेट किया जा रहा है, इसलिए मुझे एक ही SQLite3 त्रुटि मिलती है। – Christoph
इसके बारे में क्षमा करें। मैं फ्लोट से परिचित नहीं हूं :) विचार सिर्फ अनंतता के प्रतिस्थापन के रूप में एक बहुत बड़ी संख्या का प्रयास करने के लिए है। वैसे भी, क्या आपने 'Float :: MAX' का उपयोग करने का प्रयास किया है? बस इसे खोज लिया और पता था कि इससे बड़ी संख्या रूबी में अनंतता के बराबर होती है। –