我有以下结构:
在我的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)
吗?
答案 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
。