/ / ActiveRecord consulta con incluye y condiciones que no dan el SQL esperado - sql, ruby-on-rails, ruby, ruby-on-rails-3, rails-activerecord

Consulta ActiveRecord con inclusiones y condiciones que no dan el SQL esperado - sql, ruby-on-rails, ruby, ruby-on-rails-3, rails-activerecord

Ok, así que aquí está el problema que tengo. Tengo un modelo que tiene dos relaciones establecidas en condiciones en una tabla completa.

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]

Luego, en mi controlador estoy tratando de incluir esto usando

@funder_templates = FunderTemplate.find(:all, include: [:sample_plans, :link_resource], conditions: {active: true})

Pero por alguna razón, el sql sale así

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 ))

Fíjese que sólo está buscando las condiciones deLa primera relación, pero no la segunda. No sé si lo que estoy haciendo es demasiado complejo para que lo maneje ActiveRecord o si lo estoy escribiendo incorrectamente. Cualquier ayuda sería apreciada.

Rieles 3.0.20

Ruby 1.9.2

Editar: Para aclarar, la parte realmente desordenada es @ funder_templates.sample_plans es correcta, pero @ funder_templates.link_resource también son ejemplos de planes. Sin los incluidos, las relaciones funcionan bien, simplemente no están optimizadas.

Respuestas

0 para la respuesta № 1

Has probado ? @funder_templates = FunderTemplate.where (active: true) .includes ([: sample_plans,: link_resource])

Creo que debería funcionar