Ruby on Rails 5.2 - ActiveRecord::UnknownAttributeReference

वर्ग ActiveRecord :: UnknownAttributeReference




ruby

वर्ग ActiveRecord :: UnknownAttributeReference

जनक:
ActiveRecord::ActiveRecordError

UnknownAttributeReference तब उठाया जाता है जब allow_unsafe_raw_sql को सेट किया जाता है: जब एक अज्ञात और संभावित असुरक्षित मान एक क्वेरी पद्धति में पारित किया जाता है। उदाहरण के लिए, किसी संबंध के आदेश विधि के लिए एक गैर स्तंभ नाम मान से गुजरना इस अपवाद का कारण हो सकता है।

जब इस अपवाद के आसपास काम कर रहे हों, तो उपयोगकर्ता को प्रदान किए गए मानों को क्वेरी विधियों में पास करते समय SQL इंजेक्शन भेद्यताओं से बचने के लिए सावधानी बरतनी चाहिए। ज्ञात-सुरक्षित मानों को क्वेरी विधियों में Arel.sql में लपेटकर पारित किया जा सकता है।

उदाहरण के लिए, allow_unsafe_raw_sql के साथ: अक्षम, निम्न कोड इस अपवाद को बढ़ाएगा:

Post.order("length(title)").first

Arel.sql में ज्ञात-सुरक्षित स्ट्रिंग लपेटकर वांछित परिणाम पूरा किया जा सकता है:

Post.order(Arel.sql("length(title)")).first

फिर से, उपयोगकर्ता-प्रदान किए गए मानों जैसे अनुरोध पैरामीटर या मॉडल विशेषताओं को क्वेरी करने के तरीकों को पारित करते समय इस तरह के वर्कअराउंड का उपयोग नहीं किया जाना चाहिए।