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

时间:2019-04-24 14:11:19

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

我有以下型号:

Task,其中has_many :commentshas_many :checklists

Comment,其中has_many :activities

Checklist,其中has_many :activities

->(多态关联)。

例如,如果我做类似的事情,我想让Activity中的每个Task都存在:

Task.first.checklists.first.activities

它返回结果,

Task.first.comments.first.activities` 

但是我无法编写正确的语法来获取任务中的所有活动,谢谢。

1 个答案:

答案 0 :(得分:2)

您可以定义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