2

에 속하는 모든 에서 모두 links을 가져 오도록 ActiveRecord에 알리는 방법은 무엇입니까? 내가 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 :) 

답변

3

당신은 이런 관계를 구축 할 수 있습니다 :

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

이 방법을 사용하면 호출 할 수

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