Tôi đang lấy một số dữ liệu từ API bên ngoài và muốn lưu vào bộ nhớ cache kết quả cục bộ. Tôi có một class SearchTerm
, mà tôi muốn được liên kết với một vài loại ActiveRecord khác nhau thông qua bảng searchable_items
. Tôi khá chắc chắn rằng tôi có các bảng thiết lập chính xác, nhưng một cái gì đó trong các hiệp hội của tôi phải sai.Rails đa hình has_many: thông qua
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
tôi mong chờ để có thể làm điều gì đó như SearchTerm.find_by_term('SearchTerm').searchables
(và nó sẽ trả về một mảng của Foo và Bar đối tượng) Tuy nhiên, tôi nhận được lỗi Could not find the association :searchable_items in model SearchTerm
Cảm ơn trước cho bất kỳ cái nhìn sâu sắc bạn có thể cung cấp cho tôi!
Thật không may, thêm những gì bạn đề nghị cung cấp cho 'không thể có một has_many: thông qua hiệp hội 'searchterm # searchables' trên đối tượng đa hình 'Searchable # searchable'.' – lyricat
thiết lập tương tự ở đây: http: // stackoverflow. com/questions/1683265/activerecord-has-many-through-và-đa hình-hiệp hội – Heikki
Giống như thông báo lỗi nói, bạn không thể có nhiều thông qua liên kết trên đối tượng polymorpic. Bạn có thể có riêng biệt có nhiều thông qua cho 'Foo' và' Bar' như trong câu hỏi được liên kết ở trên. – Heikki