Thank you for your help.  As you suggested, I decided to handle the
sort on the front end with a jQuery plugin.  That resolves my issues
with this, and no longer need to worry about creating a complex Active
Record call.

Thanks for your help!
Trish

On Aug 3, 8:59 pm, Angel Robert Marquez <[email protected]>
wrote:
> On Tue, Aug 3, 2010 at 9:11 AM, Trish <[email protected]> wrote:
> > See below...
>
> > Thanks!
> > Trish
>
> > On Aug 3, 11:00 am, Angel Robert Marquez <[email protected]>
> > wrote:
> > > > 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.
>
> > > Why do you believe this?
>
> > This seems to be the best way to retrieve the needed data in the
> > proper order.  My closest attempt gets me two sets of data (for
> > department_products and store_products), and then I do a "find" on
> > their ids, allowing me to do the :order statement as needed.
>
> I'm just not sure why it would be the best. Is it scalable? If you introduce
> another factor it sounds messy.
>
>
>
> > > >  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).
>
> > > What is the proper order?
> > This report needs to have (and currently has) multi-column sort
> > capabilities
>
> Well, are you exposing data with an API? Don't bake an obscure order into
> the response. Allow the front end component to do sorting and filtering.
> Just get the data dump and have the data grid view do that work for you. I
> think if you return the query as json or xml you can have any view do parse
> it, right?
>
>
>
>
>
> > > 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.
>
> > > Gotcha.
>
> > > > 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
>
> > > why not SELECT view INNER JOIN associations WHERE = AND  = OR =.
> > forgive my SQL... that is just an attempt to explain what I need.  SQL
> > is definitely not my strong suit.
>
> > > > 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.
>
> > > I'll respond after I unravel what that means in my head.
>
> > I suppose what this all comes down to, is a way to achieve the
> > necessary SQL through ActiveRecord so I can properly determine the
> > table.column_names to sort on.  As I mentioned earlier, I am able to
> > get the needed product items with my doing a find on the sum of ids...
> > so I guess this is less of an association issue, and more of a joins
> > issue ActiveRecord.find so I can get my proper sorting order..
>
> Okay, I kinda get what your saying. That is why I introduced the SQL *view*.
> It's a good way of returning data from multiple tables that aren't quite
> normalized. Which is interesting for me to look into. I'm not sure how the
> SQL view translates over into AR.
>
>
>
> > > > Any thoughts?
>
> > > Those are my thoughts. I'm newish and find attempting to help in turn
> > helps
> > > me to learn. I hope you don't mind.
>
> > Any advise helps!  I appreciate your taking the time to think about
> > this.
>
> No worries. I think we need a diagram. How much time do we have I don't want
> to eat up the clock for you :)
>
>
>
>
>
> > > > Thanks!
>
> > > You are welcome
>
> > > > Trish
>
> > > Angel
>
> > > > 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]><rubyonrails-talk%2Bunsubscrib
> > [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]<rubyonrails-talk%2Bunsubscrib
> > > >  [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]<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