From: Trish on
I am working on a project that has some complex table associations,
and I am having a hard time declaring this association in a Model, and
fear it can't be done.

Here is an example of my issue...

class StoreType < ActiveRecord::Base; end
class Store < ActiveRecord::Base; end
class Department < ActiveRecord::Base; end
class Product < ActiveRecord::Base; end

A StoreType has many stores and a Store has many Department. However,
both Store and Department have many products. An product has the
columns store_id and department_id which are mutually exclusive. This
is because a Product may belong directly to a Department, or it may be
a 'global' product that belongs directly to the Store.

What I'd like to do is have an association in the StoreType model that
would give me all products for that StoreType.

Currently, I have set up the following associtations on StoreType:

class StoreType < ActiveRecord::Base
has_many :stores
has_many :departments, :through=>:stores

has_many :store_products, :through=>:stores, :source=>:products, :uniq
=> true

has_many :department_products, :through=>:departments, :source=>:products, :uniq
=> true
end

This is using the Nested Has Many Through plugin to achieve the nested
association (department_products).

However, I'd like to have a generic 'products' association for
StoreType that pulls a combination of the two product associations.
I'd like to do this through an association instead of just through a
function because I want to gain the dynamic methods created by
has_many, specifically the "collection.find(...)" method so I can add
more conditions to the collection.

Is there a way to do this?

Thanks in advance!
Trish