如何返回has_one关系,其中要么使用false默认值创建,要么根本不创建

时间:2014-03-13 19:42:06

标签: sql ruby-on-rails ruby activerecord rails-activerecord

我有一个名为users的表,它有一个优先级。

优先级有一个名为initialized的默认值,设置为false。

我想要返回所有没有优先级或优先级为initialized = false的用户。

现在我以这种方式取货。

User.includes(:priority).where(priorities: {user_id: nil}) + 
User.joins(:priority).where({'priorities.initialized' => false})

有没有办法将两种方式结合起来并获得所需的数据。

1 个答案:

答案 0 :(得分:2)

假设优先级是另一个表而不是属性,这可能有效:

User.joins('LEFT OUTER JOIN priorities ON priorities.user_id = users.id').where('priorities.id is NULL OR priorities.initialized = ?', false)