0

描述用户与其问题和联系人的结果之间的关系的正确方法是什么?我希望能够调用 User.outcomes 并为用户获取所有结果,无论结果是针对问题还是针对联系人。

这是我现在的模型。是否正确描述了 has_many through 关系?

用户模型

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

因此,这可能不是理想的解决方案,因为它返回一个 Array 而不是 ActiveRecord::Relation。这意味着您将失去延迟加载以及进一步添加范围和where语句等的能力。它比编写 SQL 更好,并且应该做你想做的事:

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

如果您想出更好的方法,请告诉我们。

于 2012-11-25T06:49:30.180 回答