Así que tengo una aplicación con 2 modelos diferentes, Comentarios y Respuestas, cada uno de los cuales puede estar de acuerdo o en desacuerdo, entonces tengo un modelo polimórfico llamado Emoción. Aquí está mi código para éstos:Relaciones polimórficas y contador de caché
class Comment < ActiveRecord::Base
belongs_to :user
has_many :replies
has_many :emotions, :as => :emotionable
end
class Reply < ActiveRecord::Base
belongs_to :user
belongs_to :comment
has_many :emotions, :as => :emotionable
end
class Emotion < ActiveRecord::Base
belongs_to :emotionable, :polymorphic => :true
end
Así que todo esto funciona bien, pero voy a tener que añadir un contador de caché tanto comentario y Responder con el fin de obtener el tamaño del acuerdo y desacuerdo para cada Objeto. En todos los documentos, tiene ejemplos para hacer un contador de caché con asociaciones polimórficas normales, no uno con una condición adicional. A modo de referencia, mediante el esquema de emoción se ve así:
create_table "emotions", :force => true do |t|
t.integer "user_id"
t.string "emotion"
t.integer "emotionable_id"
t.string "emotionable_type"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
TL: DR - Tengo que ser capaz de llamar @ commet.agrees_count, comment.disagrees_count @, @ @ reply.agrees_count y reply.disagrees_count en una asociación polimórfica a través de un contador de caché. Así que Comment and Reply necesitará 2 cachés de contador.
Todavía no funcionó para mí – kamal