Thank you for your response.  However, I am refactoring an existing
application, and am trying to remove a bunch of pure SQL that was put
in the code.  I believe the best way to do this is with a table
association.  One of the big features I want to use out of this is
retrieving the records in the proper order (I'd prefer not to sort
with Ruby after the fact since that would force me to rewrite a bunch
of code for the sorting of the report).

However, as this is an existing application (similar in setup to the
example I gave), I cannot remove the model, as there is a table
already associated with it, and the ids are being used.

Another option that would work is to use a 'joins' statement in my
finder method so I can sort products based on Store attributes with
something like this:
FROM products
LEFT JOIN departments on departements.id = products.department_id
LEFT JOIN stores on stores.id = products.store_id OR stores.id =
departments.store_id

However, I am also using an :include option for several associations,
and it seems that joins and include are mutually exclusive.  I'd
really had to have to write out all of the associations.

Any thoughts?

Thanks!
Trish

On Aug 3, 2:11 am, Angel Robert Marquez <[email protected]>
wrote:
> class Store < ActiveRecord::Base
> has_many: store_type
> has_many: product_type, :through => department
>
> class Department < ActiveRecord::Base
> belongs_to: store
> belongs_to: product
>
> class Product < ActiveRecord::Base
>   has_many :departments
>   has_many :stores, :through => department
> end
>
> I think you need to remove the StoreType as a model...
>
>
>
> On Mon, Aug 2, 2010 at 11:05 AM, Trish <[email protected]> wrote:
> > 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
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Ruby on Rails: Talk" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<rubyonrails-talk%2Bunsubscrib 
> > [email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/rubyonrails-talk?hl=en.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to