我是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为空。
这可能吗?
由于
答案 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