Could anyone please help? Getting exceptions trying to implement:
module P
class List < ActiveRecord::Base
has_many :list_items
has_many :items, :through => :list_items
has_many :contacts, :source => :item, :through => :list_items,
:source_type => “P::Contact”
has_many :users, :source => :item, :through => :list_items,
:source_type => “P::User”
end
class ListItem < ActiveRecord::Base
belongs_to :list
belongs_to :item, :polymorphic => true
end
class Contact < ActiveRecord::Base
has_many :lists, :through => :list_items
has_many :items, :as => :item
end
class User < ActiveRecord::Base; end # associations like Contact
end
Trying to make List of ListItem where the item is any of Contact,
User, etc.
Several problems:
-
P::List.find(:first).contacts does not narrow by the item_type and
instead returns e.g. Contacts with ids from User items. Adding
:conditions => ‘item_type = “P::Contact”’
to the :has_many :contacts fixes this but, -
P::List.find(:first).items (which should return all items of all
item_types in the first list) instead throws:
ActiveRecord::HasManyThroughAssociationPolymorphicError: Cannot have a
has_many :through association ‘P::List#items’ on the polymorphic
object ‘Item#item’.
I’ve been scratching on this for a while now. Could someone please
explain wtf is going on with this setup ?
Thanks,
tv