0
User.where(id: users_ids)
.joins('LEFT JOIN names ON names.user_id = users.id AND names.primary = 1')
.joins('LEFT JOIN emails ON emails.user_id = users.id AND emails.primary = 1')
.select('users.*, names.first_name AS f_name , emails.email AS primary_email')
我需要订购记录f_name
。当f_name
为nil
时,记录将移至最后并通过电子邮件进行排序。Ruby on Rails:空值的订单记录
下面是查询,
User.where(id: users_ids)
.joins('LEFT JOIN names ON names.user_id = users.id AND names.primary = 1')
.joins('LEFT JOIN emails ON emails.user_id = users.id AND emails.primary = 1')
.select('users.*, names.first_name AS f_name , emails.email AS primary_email')
.where('names.first_name IS NOT NULL')
.order('f_name asc').union(
User.where(id: users_ids)
.joins('LEFT JOIN names ON names.user_id = users.id AND names.primary = 1')
.joins('LEFT JOIN emails ON emails.user_id = users.id AND emails.primary = 1')
.select('users.*, names.first_name AS f_name , emails.email AS primary_email')
.where('names.first_name IS NULL')
.order('primary_email asc'))
上面的查询不起作用。
数据库 - MySQL的
它是如何不工作? –
对不起,我忘了添加我正在使用分页'.paginate(page:params [:page])。per_page(10)'并且错误'undefined method'paginate'for#' –
不知道Arel :: Nodes :: Union或paginate方法来自何处。可能不是'.union',请尝试使用'||'或'.or'(如果您使用的是Rails 5) –