mi problema está siguiendo. ¿Cómo puedo une a belongs_to asociación de modelo polimórficoRails se une o precarga pertenece a la asociación del modelo polimórfico
Existe situación
opinion.rb
class Opinion < ActiveRecord::Base
belongs_to :opinionable, :polymorphic => true
belongs_to :category
end
answer.rb
class Answer < ActiveRecord::Base
has_many :opinions, :as => :opinionable
end
¿Cómo puedo hacer después de
Opinion.joins(:opinionabe).all
arrojará
ArgumentError: You can't create a polymorphic belongs_to join without specifying the polymorphic class!
¿Cómo puedo especificar a qué clase deseo unirme?
Segunda pregunta. Cómo precargarlo?
Opinion.preload(:opinionable).all
funciona bien. Hará una consulta para cada clase en belongs_to.
Pero. si quiero hacer algo como
Opinion.preload(:opinionable => :answer_form).all
hay un problema porque un modelo tiene esta asociación y el segundo no. Entonces arrojará una excepción.
Entonces, ¿cómo puedo hacer algo como
Opinion.preload(:answer => :answer_form, :another_belongs_to_model).all
?
Gracias, David!
Polyporhic funciona bien para mí (tener la columna ID y el tipo en la tabla). Tengo tu explicación de por qué no funciona. Eché de menos el hecho de que la modelo no sabe qué clases están en belongs_to. – Schovi
Tener idea. Es posible algo así si conozco la clase Opinion.joins ([: opinionable, Answer])? – Schovi
Si conoce la clase concreta, puede agregar algo como: 'belongs_to: opinionable_answer,: foreign_key =>: opinionable_id,: class_name =>" Answer "' into' Opinion' model. Y luego 'Opinion.joins (: opinionable_answer) 'debería funcionar bien. –