استخدام الباحثين الديناميكيين لتحديد عدم فارغ
-
01-10-2019 - |
سؤال
غالبًا ما أرغب في استخدام الباحثين الديناميكيين لتحديد عدم وجود فارغ. لذا…
هذا يعمل:
Widget.find_all_by_color('blue')
هذا يعمل:
Widget.find_all_by_color(nil)
لكن كيف يمكنني أن أفعل
SELECT * FROM `widgets` WHERE `color` IS NOT NULL;
?
المحلول
جرب هذا:
Widget.all(:conditions => "color IS NOT NULL")
نصائح أخرى
طريقتان اعتمادا على مدى محددة تريد أن تكون:
# in your model
class Widget < ActiveRecord::Base
# first way
named_scope :coloured, {:conditions => ["color IS NOT NULL"]}
# second way
named_scope :not_null, lambda{|*args| (field=args.first ? {:conditions => ["#{field} is not null",field]} : {}) } }
end
# in your controller
@coloured_widgets = Widget.coloured.all # using first way
@coloured_widgets = Widget.not_null(:colour).all # using second way
اتمني ان يكون مفيدا.
هتافات
Widget.find(:all, :conditions => "color IS NOT NULL")
ليس أنيقًا تمامًا ، ولكن هذا يجب أن ينجح:
Widget.find(:all, :conditions => "'color' IS NOT NULL")
لا تنتمي إلى StackOverflow