在我的应用程序中,学生在问题集或测验中做题。例如,当学生在问题集上做一个问题时,该问题/用户的两个统计信息会更新 - 一个问题集统计数据和一个问题统计数据。因此我的关系如下
class ProblemSetInstance
has_one :user
has_many :problem_set_stats
end
class ProblemSetStat
belongs_to :problem_set
belongs_to :problem_stat
has_one :problem_type, :through => :problem_stat
end
class ProblemStat
belongs_to :problem_type
# no has_many problem_set_stats, because I never need to access them from here currently
end
在尝试优化一些数据库查询时,我遇到了一件奇怪的事情。当我显示问题集时,我使用以下查询
ps = problem_set_stats.includes(:problem_stat => [:problem_type])
ps.first.problem_stat
现在,我可以ps.first.problem_stat.problem_type
不用执行额外的查询。但是,当我这样做时,ps.first.problem_type
会进行另一个查询。.problem_type
有什么方法可以在不将我的所有s更改为 s 的情况下解决此问题.problem_stat.problem_type
?