Ruby on Rails 4过滤包括Model

时间:2016-01-24 23:00:41

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

我是Rails的新手,我试图做一些疑问,但我失败了。我有两个ActiveRecord :: Base,如下所示:

class A < ActiveRecord::Base
  has_many :bs
end

class B < ActiveRecord::Base
  belongs_to :a
end

我想显示A中的每一行。在这些行中,B中的每一行(与A相关),其中B有一些任意日期(作为参数传递)。

我已经尝试过使用范围,连接,包含,合并,但似乎没有任何效果。 我想要所有的A,而A.bs只返回特定日期的Bs。 在许多情况下,A并没有特定日期的B,即便如此,我希望A返回,A.bs为空。

这可能吗?

由于

1 个答案:

答案 0 :(得分:0)

即使B(右)中没有匹配,您也可以使用.includes执行包含A(左)记录的LEFT OUTER JOIN

@a = A.includes(:bs).where(bs: { due_at: Date.yesterday }).find(params[:id])
@bs = @a.bs # will use the eager loaded collection