2011-01-09 6 views
14

私は外部APIからいくつかのデータを取得しており、結果をローカルにキャッシュしたいと思います。私はclass SearchTermを持っています。これはテーブルsearchable_itemsを通して、いくつかの異なるActiveRecordタイプに関連したいと思います。私はテーブルを正しくセットアップしているとはかなり確信していますが、私の団体の何かが間違っていなければなりません。多様なコードhas_many:through

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 
私は(と、それはfooとバーオブジェクトの配列を返します)しかし、私は任意の洞察力のために事前にエラーに Could not find the association :searchable_items in model SearchTerm

感謝を取得SearchTerm.find_by_term('SearchTerm').searchablesような何かを行うことができることを期待する

ます私に提供することができます!

答えて

11

あなたは:through => :searchable_itemsオプションはその会合をいうのでFooBarSearchTermモデルにhas_many :searchable_items関連付けを追加する必要があります。

http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

+5

残念ながら、あなたが示唆したものを追加すると、 'がにhas_manyを持つことはできません提供します:協会を通じて 'SEARCHTERM#searchables' ポリモーフィックオブジェクトの検索可能#のsearchable'.'にここ – lyricat

+8

同様のセットアップします。http://のstackoverflowを。 com/questions/1683265/activerecord-has-many-through-and-polymorphic-associations – Heikki

+3

エラーメッセージにあるように、ポリモーピックオ​​ブジェクトには多くの関連を持つことはできません。上のリンクされた質問のように、 'Foo'と' Bar'のために別々にすることができます。 – Heikki

関連する問題