使用scope 链接多个where条件
程序员文章站
2022-05-25 18:36:21
...
scope :by_category, (lambda do |category_id| where(category_id: category_id) unless category_id.nil? end) scope :by_district, (lambda do |district_id| where(district_id: district_id) unless district_id.nil? end) #if district 是nil就会返回全部 Client.by_category(category).by_district(district)
class User scope :by_age, lambda do |age| joins(:profile).where('profile.age = ?', age) unless age.nil? end scope :by_name, lambda{ |name| where(name: name) unless name.nil? } scope :by_email, lambda do |email| joins(:profile).where('profile.email = ?', email) unless email.nil? end end
wheres = [:id, :email].map{|key| params.has_key?(key) ? {key => params[key]} : {} }\ .inject({}){|hash, injected| hash.merge!(injected)} @users = User.where(wheres).limit(10)
#user.rb scope :by_status, lambda { |status| where(:status => status) unless status.blank? } # If you need to execute a block of code you can use the following syntax scope :by_status, (lambda do |status| where(:active => status) unless status.blank? end) #Active users pry(main)> User.by_status(1) SELECT `users`.* FROM `users` WHERE `users`.`active` = 1 #Inactive users pry(main)> User.by_status(0) SELECT `users`.* FROM `users` WHERE `users`.`active` = 0 #All users pry(main)> User.by_status(nil) SELECT `users`.* FROM `users`
推荐阅读
-
Linux 使用grep过滤多个条件及grep常用过滤命令
-
使用“超级链接”在多个 Word 2000 文档之间跳转
-
【正则匹配】python使用正则re匹配获取符合正则条件的一个或多个结果
-
mysql 使用技巧 where条件连接;inner join内连接;外连接(left outer join,right outer join)
-
Linux 使用grep筛选多个条件及grep常用过滤命令
-
详解mysql 使用left join添加where条件的问题分析
-
laravel中Join语法以及使用Join多个条件
-
MyDAL - .Where() 之 .WhereSegment 根据条件 动态设置 Select查询条件 使用
-
php 在使用if判断的时候 如果是多个逻辑或(||)条件 有没有简写的方法
-
php-多个逻辑或运算符和比较运算符一起使用共同作为条件判断的问题