2

ActiveRecordに、に属するすべて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 :) 

答えて

3

あなたはこのような関係を構築することができます

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

このように、あなたが呼び出すことができます。

a = AdTemplate.find(1) 
a.links 
# This will build the query joins automatically 
関連する問題