假设用户有两个范围,“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}})
我正在使用导轨 3.2.12