【问题标题】:How to fetch all associated grand children records?如何获取所有关联的孙子记录?
【发布时间】:2016-07-01 12:29:07
【问题描述】:

如何告诉 ActiveRecord 从属于特定AdTemplate 的所有Canvases 中获取所有links?我已经为它创建了一个canvases_links 方法,但也许 ActiveRecord 有一些开箱即用的关联方法?

class AdTemplate < ActiveRecord::Base
    has_many :canvas

    def canvases_links
      canvas.includes(:links).map do |canva|
        canva.links
      end.flatten
    end    
end

class Canva < ActiveRecord::Base
    belongs_to :ad_template
    has_many :links
    has_many :close_areas
end

class Link < ActiveRecord::Base
  belongs_to :canva
end


a = AdTemplate.find(1)
a.canvases_links # works okay
a.active_record_magic_method_links # must return the same data as a.canvases_links method :)

【问题讨论】:

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


    【解决方案1】:

    你可以这样建立关系:

    class AdTemplate < ActiveRecord::Base
      has_many :links, through: :canvas
    

    这样,你可以调用:

    a = AdTemplate.find(1)
    a.links
    # This will build the query joins automatically
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 2013-02-14
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      相关资源
      最近更新 更多