|
- class UserQuery < ApplicationQuery
- attr_reader :params
-
- def initialize(params)
- @params = params
- end
-
- def call
- users = User.where(type: 'User')
-
- # 真实姓名
- if name = strip_param(:name)
- users = users.where('LOWER(CONCAT(users.lastname, users.firstname)) LIKE ? OR users.nickname LIKE ?', "%#{name.downcase}%", "%#{name.downcase}%")
- end
-
- # 单位名称
- if school = strip_param(:school)
- users = users.joins(user_extension: :school).where('schools.name LIKE ?', "%#{school}%")
- end
-
- # 职业
- if (identity = strip_param(:identity)) && UserExtension.identities.keys.include?(identity)
- users = users.joins(:user_extension).where(user_extensions: { identity: identity })
- end
-
- users
- end
- end
|