【问题标题】:Get all has_many instances for each collection item获取每个集合项的所有 has_many 实例
【发布时间】:2019-04-24 14:11:19
【问题描述】:

我有以下型号:

Task 其中has_many :commentshas_many :checklists

Comment 其中has_many :activities

Checklist 其中has_many :activities

->(多态关联)。

我想获取Task 中的每个Activity,例如,如果我执行以下操作:

Task.first.checklists.first.activities

它返回结果,所以也是:

Task.first.comments.first.activities` 

但我无法编写正确的语法来获取任务中的每个活动,提前谢谢你。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • has_many :activities, through: :comments。如果你想给它起别名,你必须使用source: 选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多