我从外部API中提取一些数据,并希望在本地缓存结果。我有class SearchTerm
,我想通过表searchable_items
与几种不同的ActiveRecord类型相关联。我很确定我的表格设置正确,但我的关联中的某些内容必定是错误的。
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
我希望能够做类似SearchTerm.find_by_term('SearchTerm').searchables
的事情(它会返回一个Foo和Bar对象的数组)然而,我得到了错误
Could not find the association :searchable_items in model SearchTerm
提前感谢您提供给我的任何见解!
答案 0 :(得分:11)
您需要将has_many :searchable_items
关联添加到Foo
,Bar
和SearchTerm
模型,因为:through => :searchable_items
选项指的是该关联。
http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association