如何在Rails中包含范围模型?

时间:2013-02-14 22:13:39

标签: ruby-on-rails rails-activerecord

如果我只是在查询中包含嵌套模型这样

@projects = current_user.projects.all(include: :reviews)
一切都好。但是Review模型有一定的范围,我需要在上面的查询中实现。我试着这个

@projects = current_user.projects.all(include: :reviews.unreaded)

并获得错误。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

一种选择是基于范围创建关联,粗略地说:

@projects = current_user.projects.all(include: :unread_reviews)

然后创建一个unread_reviews关联,大致:

class Project < ...
  has_many :unread_reviews, :conditions => ['read=?', true], :class_name => "Review"

(显然,将上述has_many替换为您的关联详情。)

association docs中讨论了这种技术。