(可以将标题更改为更合适的标题)
我正在使用Ruby on Rails,并且有两个模型集:
存储
页面has_many
存储。
status_nbr
的范围是1-5。例如,第1页可能有5个商店,其中两个拥有status_nbr = 1
,三个拥有status_nbr = 3
。
我想运行一个查询,以查找没有没有商店且status_nbr = 1的所有页面。换句话说,缺少具有status_nbr = 1的商店的页面。 ?我认为可以通过一些巧妙的连接来做到这一点?
目前,我运行一个循环:
ok_list = []
Page.all.each do |page|
ok_list << page.id unless page.stores.where(:status_nbr => 1).blank?
end
@pages = Page.where(:id => ok)
这是非常糟糕的/缓慢的编程。
编辑:这不是所提及问题的重复问题。我的模型依赖于另一个模型以及该另一个模型的属性。
答案 0 :(得分:-1)
这应该有效。
Page.joins(:store).where.not(store: { status_nbr: 1}).uniq