根据另一个活动记录属性排除活动记录条目

时间:2019-09-26 09:38:17

标签: ruby-on-rails ruby ruby-on-rails-3 join activerecord

(可以将标题更改为更合适的标题)

我正在使用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)

这是非常糟糕的/缓慢的编程。

编辑:这不是所提及问题的重复问题。我的模型依赖于另一个模型以及该另一个模型的属性。

1 个答案:

答案 0 :(得分:-1)

这应该有效。

Page.joins(:store).where.not(store: { status_nbr: 1}).uniq