0

ユーザーとその質問と連絡先の結果との関係を説明する正しい方法は何ですか? User.outcomes を呼び出して、結果が質問に対するものか連絡先に対するものかに関係なく、ユーザーのすべての結果を取得できるようにしたいと考えています。

これが現在の私のモデルです。has_many スルー リレーションシップは正しく記述されていますか?

ユーザーモデル

has_many :questions
has_many :contacts
has_many :outcomes, through: :questions
has_many :outcomes, through: :contacts

質問モデル

has_many :outcomes

連絡先モデル

has_many :outcomes

結果モデル

belongs_to :question
belongs_to :contact
4

1 に答える 1

1

So, this is probably not the ideal solution because it returns an Array instead of an ActiveRecord::Relation. That means you lose lazy loading and the ability to further add scopes and where statements and whatnot. It's better than writing SQL and should do what you want though:

class User < ActiveRecord::Base

  has_many :questions
  has_many :contacts
  has_many :questions_outcomes, :through => :questions, :class_name => "Outcomes"
  has_many :contacts_outcomes, :through => :contacts, :class_name => "Outcomes"

  def outcomes
    return questions_outcomes + contacts_outcomes
  end
end

Please let us know if you come up with something nicer.

于 2012-11-25T06:49:30.180 に答える