是否有可能实现“或”?在活动记录中使用'包含'?

时间:2014-04-26 00:42:16

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

我正在尝试从ActiveRecord模型中查询,让我们称之为user

  • 用户has_many :projects
  • 项目has_one :thing
  • 用户has_many :things, through: :projects

我有兴趣找到projects things completedthings根本没有projects.includes(:thing).where( things: { status: :complete } ).or( things: { id: nil } ) 的所有projects.includes(:thing).where( things: [ { status: :complete }, { id: nil } ] )

几次尝试:

query = projects.includes(:thing)
query.where(things: {id: nil}) & query.where(things: {status: :complete})

{{1}}

如果可能的话,我更愿意在没有SQL的情况下实现这一点,即使它是这样的:

{{1}}

1 个答案:

答案 0 :(得分:0)

所以这可能适用于您,也可能不适合您,但请尝试

query = projects.includes(:thing) query.where(things:{id:nil})。join(query.where(things:{status :: complete}))

我自己无法对此进行测试,但我真的很好奇它是否真的会将两个查询结合在一起。我稍后会玩它