कार्यक्षेत्र क्वेरी तर्क अरेल का उपयोग कर पैदा करने के बारे में हैं। यदि आप पूर्ण के तर्क का प्रतिनिधित्व नहीं कर सकते हैं? एसक्यूएल में विधि तो आप
स्कॉप्स - कम से कम रेल 3 में - परिणाम सेट को वापस किए बिना क्वेरी तर्क को एक साथ करने के लिए हैं। आप एक परिणाम के पूरा करने के लिए अपने परीक्षण करने के लिए सेट की जरूरत है आप
class MyModel < ActiveRecord::Base
scope :public, lambda{ where ({:public => true}) }
def self.completed_public_records
MyModel.public.all.select { |r| r.completed? }
end
end
# elsewhere
MyModel.completed_public_records
की तरह कुछ करने की आवश्यकता होगी या आप और अधिक लचीलापन
class MyModel < ActiveRecord::Base
scope :public, lambda{ where ({:public => true}) }
# some other scopes etc
def self.completed_filter(finder_obj)
unless finder_obj.is_a?(ActiveRecord::Relation)
raise ArgumentError, "An ActiveRecord::Relation object is required"
end
finder_obj.all.select { |r| r.completed? }
end
end
# elsewhere
MyModel.completed_filter(MyModel.public.another_scope.some_other_scope)
स्रोत
2011-06-01 11:23:55
हो सकता है कि एक लैम्ब्डा पूरा युक्त भेजें? दायरे lambda के लिए एक पैरामीटर के रूप में तर्क? – Zabba