好的,这就是我遇到的问题。我有一个模型,在直通表中的条件设置了两个关系。
has_one :link_resource, through: :resource_contexts, source: :resource, conditions: ['resource_contexts.question_id = ? ', -1]
has_many :sample_plans, through: :resource_contexts, source: :resource, conditions: ['resource_contexts.question_id = ? ', -2]
然后,在我的控制器中,我试图使用
来包含这些内容@funder_templates = FunderTemplate.find(:all, include: [:sample_plans, :link_resource], conditions: {active: true})
但由于某种原因,sql就像这样出现了
ResourceContext Load (0.2ms) SELECT `resource_contexts`.* FROM `resource_contexts` WHERE (`resource_contexts`.funder_template_id IN (2,3,4,5,6,7,8,9,10,11,12,13,14,20,21,22,23,24,25,26,27,30,40) AND (resource_contexts.question_id = -2 ))
注意它只是寻找第一个关系的条件,而不是第二个关系的条件。我不知道我正在做的事情是否太复杂,以至于ActiveRecord无法处理,或者我只是错误地编写它。任何帮助将不胜感激。
Rails 3.0.20
Ruby 1.9.2
编辑:为了澄清,真正混乱的部分是@ funder_templates.sample_plans是正确的,但@ funder_templates.link_resource也是样本计划!没有包含,关系工作正常,它只是没有优化。
答案 0 :(得分:0)
我认为,它应该有用