我有一个名为users的表,它有一个优先级。
优先级有一个名为initialized的默认值,设置为false。
我想要返回所有没有优先级或优先级为initialized = false的用户。
现在我以这种方式取货。
User.includes(:priority).where(priorities: {user_id: nil}) +
User.joins(:priority).where({'priorities.initialized' => false})
有没有办法将两种方式结合起来并获得所需的数据。
答案 0 :(得分:2)
假设优先级是另一个表而不是属性,这可能有效:
User.joins('LEFT OUTER JOIN priorities ON priorities.user_id = users.id').where('priorities.id is NULL OR priorities.initialized = ?', false)