获取每个集合项的所有 has_many 个实例

Get all has_many instances for each collection item

我有以下型号:

Task 其中 has_many :commentshas_many :checklists

Comment 其中 has_many :activities

Checklist 其中 has_many :activities

->(多态关联)。

我想获取 Task 中的每一个 Activity,例如,如果我做类似的事情:

Task.first.checklists.first.activities

它 returns 结果,也是:

Task.first.comments.first.activities` 

但我无法编写正确的语法来让我在任务中的每个 activity 中得到我,提前谢谢你。

您可以定义 has_many through: 个关联:

class Task 
  has_many :comments
  has_many :checklists

  has_many :comment_activities, through: :comments, source: :activities
  has_many :checklist_activities, through: :checklists, source: :activities
end

并按如下方式使用它们:

Task.first.checklist_activities
Task.first.comment_activities