Je tire des données d'une API externe et voudrais mettre en cache les résultats localement. J'ai un class SearchTerm
, que je voudrais être associé à quelques types différents ActiveRecord à travers la table searchable_items
. Je suis sûr que j'ai les tables correctement, mais quelque chose dans mes associations doit être faux.Rails polymorphique has_many: à travers
class Foo < ActiveRecord::Base
has_many :search_terms, :as => :searchable, :through => :searchable_items
end
class Bar < ActiveRecord::Base
has_many :search_terms, :as => :searchable, :through => :searchable_items
end
class SearchTerm < ActiveRecord::Base
has_many :searchables, :through => :searchable_items
end
class SearchableItem < ActiveRecord::Base
belongs_to :search_term
belongs_to :searchable, :polymorphic => true
end
Je pense pouvoir faire quelque chose comme SearchTerm.find_by_term('SearchTerm').searchables
(et il retourne un tableau d'objets Foo et Bar) cependant, je reçois l'erreur Could not find the association :searchable_items in model SearchTerm
Merci d'avance pour toute perspicacité dont vous peut me fournir!
Malheureusement, en ajoutant ce que vous suggérez donne 'ne peut pas avoir une has_many: par l'association 'searchTerm #' sur Searchables l'objet polymorphes « interrogeable # searchable'.' de – lyricat
configuration similaires ici: http: // stackoverflow. com/questions/1683265/activerecord-a-plusieurs-à-travers-et-polymorphique-associations – Heikki
Comme le message d'erreur dit, vous ne pouvez pas avoir beaucoup d'à travers l'association sur l'objet polymorpique. Vous pourriez avoir séparé plusieurs passages pour 'Foo' et' Bar' comme dans la question ci-dessus. – Heikki