मैं काफी कुछ समय के लिए लूटना उपयोग कर रहे हैं, लेकिन मैं किसी भी संभावना के लिए आप क्या देख रहे हैं करने के लिए नहीं दिख रहा। आप जो चाहते हैं वह एक "केस -> जब" कथन है, जिसे रेल में या ActiveRecord के साथ SQL में उत्पादित किया जा सकता है।
रंसैक आपको विशेषता, भविष्यवाणी और मूल्य परिभाषित करके कस्टम एसक्यूएल कमांड बनाने की क्षमता देता है, जो आपके द्वारा पहले से उल्लेखित कथन में अनुवाद करता है। मुझे रेंसैक को सीधे आप जो चाहते हैं उसे फ़िल्टर करने के लिए बताने की कोई संभावना नहीं दिखती है। हालांकि:
क्या आप की तरह एक गुंजाइश पैदा कर सकता है:
scope :column_b_gt_columnb_a, -> { where('column_b > column_a') }
और फिर आप इस तरह अपनी खोज का निर्माण कर सकते हैं:
Object({ column_b_gt_columnb_a: true })
शायद नहीं वास्तव में आप क्या देख रहे थे, लेकिन मुझे लगता है यह सबसे अच्छा है कि आप प्राप्त करेंगे ...
और यदि आप रेल के साथ ऐसा करना चाहते हैं तो आप मूल्यों की तुलना करने के लिए करेंगे या कहेंगे कि मैंने कहां ऊपर दिया गया कथन।
Records.each do |i|
case i.variable_a
when i.variable_b
# do something when it's the same
when i.variable_a > i.variable_b
# do something when it's greater
end
end
एक SQL बयान के एक उदाहरण के लिए यहाँ देखो
How do I compare two columns for equality in SQL Server?
आशा है कि यह एक बिट में मदद करता है!
तो आप दोनों कॉलम_ए और कॉलम_बी विशेषताओं को चाहते हैं। 'Person.search ({id_eq: 1}, {name_object:: abcd} की तरह नहीं)। परिणाम.to_sql' – Sontya