从' has_many到'获取额外的属性值协会

时间:2017-01-14 19:15:55

标签: ruby-on-rails has-many-through

我有以下结构:

在我的answer模型中:

class Answer < ApplicationRecord
  has_many :answer_test_case_results
  has_many :test_cases_result, through: :answer_test_case_results, source: :test_case
end

我的answer_test_case_result

class AnswerTestCaseResult < ApplicationRecord
  belongs_to :answer
  belongs_to :test_case

  def get_output
    output
  end
end

我的answer_test_case_result模型有一个名为output的额外属性。在我的answer模型中,我希望从output关系访问此test_cases_result,但是此属性的方式仅返回保存并与此答案关联的test_case个对象。

有一种方法可以在没有查询的情况下直接从我的AnswerTestCaseResult(即output)访问AnswerTestCaseResult.where(answer: answer, test_case: test_case)吗?

1 个答案:

答案 0 :(得分:1)

这种行动的例子很少令人难以置信。但现在我明白我做错了什么:我应该访问我的has_many :answer_test_case_results,而不是has_many :test_cases_result, through: :answer_test_case_results, source: :test_case

如果我想保留属性,对于我的情况,在语义上更合适,我可以使用:has_many :test_cases_result, class_name: "AnswerTestCaseResult"

例如,我可以通过output访问answer.test_cases_reult.first.output