FormResponse がbelongs_to
あります。フォーム、次にhas_many
質問:
class FormResponse < ActiveRecord::Base
belongs_to :form
end
class Form < ActiveRecord::Base
has_many :form_responses
has_many :questions
end
class Question < ActiveRecord::Base
end
フォームのコンテキストで多くのことが必要questions
であることに気付いた場合、次のように FormResponse で質問を呼び出すことを好みます。
form_response = FormResponse.find(id)
form_response.questions
利用可能にするためにquestions
、ActiveRecord でこれを行うことができます。
class FormResponse < ActiveRecord::Base
belongs_to :form
has_many :questions, :through => :form
end
またはインスタントメソッドを使用:
class FormResponse < ActiveRecord::Base
belongs_to :form
def questions
self.form.questions unless self.form.nil?
end
end
FormResponse で質問を設定することには興味がありません (FormResponse.questions <<
や
のようなものは必要ありませんFormResponse.questions.build
)。フェッチだけです。
メソッドを使用するよりも を使用する利点と、has_many :questions, :through =>
:form
その逆の利点は何ですか? 遅延読み込み、より優れた SQL などの利点はありますか?
AR は、いつ AR リレーションを使用するか、いつ単純に独自のメソッドを記述するかについて経験則を与えていますか?