【发布时间】:2013-04-15 03:30:51
【问题描述】:
假设用户有两个范围,“non_member”和“new_user”。我想对它们进行 OR,包括连接和排序。
我尝试提取 where 子句来为两个范围构造 OR 语句。但是,连接和订单不包括在内。
例如
non_member_where = User.non_member.where_values.reduce(:and)
new_user_where = User.new_user.where_values.reduce(:and)
@users = User.where("#{non_member_where} OR #{new_user_where}")
非成员范围需要加入成员资格表。如果您使用上面的代码,则不会加入,因为它只与位置有关。
有没有更好的方法来“或”两个范围?类似的东西
@users = User.non_member.or.new_user
输出是这样的:
SELECT users.* FROM users LEFT JOINS memberships ON memberships.user_id = users.id
WHERE((memberships.user_id IS NULL) OR (users.created_at < {{2 days ago}})
我正在使用 rails 3.2.12
【问题讨论】:
-
我最近尝试这样做,发现活动记录对OR的支持很差。最近可能变了。你用的是什么 Rails 版本?
-
我正在使用 rails 3.2.12
标签: ruby-on-rails ruby activerecord