I think it has to be with the type of relationships you set up. As I told you, you just need a one-to-many relationship reading your code. I tried your find with a many-to-many relationship and it worked for me.
On Tue, Sep 23, 2008 at 4:05 PM, ressister <[EMAIL PROTECTED]> wrote: > > Hi Andres, thanks for the reply. I tried your suggested setup, but it > didn't work. I then tried a simpler query with my existing model > setup (which you see above) which did work... > > @first = Entry.find(:first, :include => :category) > @first.category.name > > Both those work which is great. However, if i try my orignial > query... > > @entries = Entry.sum(:price, :include => :category, :conditions => > ['user_id = 1'], :group => 'categories.id') > > I get this... > > ActiveRecord::StatementInvalid: Mysql::Error: Unknown column > 'categories.entry_id' in 'on clause': SELECT sum(`entries`.price) AS > sum_price, categories.id AS categories_id FROM `entries` LEFT OUTER > JOIN `categories` ON categories.entry_id = entries.id WHERE > (user_id = 1) GROUP BY categories.id > > Categories doesn't have an entry_id, it doesn't seem to be picking up > entry_category as the join table, though based on its naming, it isn't > a traditional join table otherwise it would be called > category_entry. > > Any thoughts? Thanks again for your reply. > > -A > > On Sep 23, 4:11 pm, "Andres Rodriguez" <[EMAIL PROTECTED]> wrote: > > An entry can only belong to a category right? If this is the case you > don't > > need this many-to-many association. You just have to: > > > > class Category < ActiveRecord::Base > > has_many :entries > > end > > > > class Entry < ActiveRecord::Base > > belongs_to :user > > belongs_to :category > > end > > > > This will let you do: > > > > my_entry.category.name > > my_category.entry > > > > If you want to keep working with that model then you have an error in > your > > query. Using :include in finders will modify the structure of your SQL > > query. So you have to refer to table names in conditions like this: > > > > :conditions => ['users.user_id = 1'] > > > > > > > > On Tue, Sep 23, 2008 at 2:00 PM, ressister <[EMAIL PROTECTED]> wrote: > > > > > I'm having trouble with three models that need to play nice together: > > > > > - entry <- stores diary entries > > > - entry_category <- links a diary entry to a category (entry_id, > > > category_id) > > > - category <- list of category names and attributes > > > > > I want to be able to :include => :categories when I perform a find, > > > but I'm not sure if I have the model associations wrong or if my find > > > syntax is wrong or both? An entry should only be able to be a part of > > > one category. > > > > > Here are the models: > > > > > class EntryCategory < ActiveRecord::Base > > > belongs_to :entry > > > belongs_to :category > > > end > > > > > class Category < ActiveRecord::Base > > > has_many :entry_categories > > > has_many :entries, :through => :entry_categories > > > end > > > > > class Entry < ActiveRecord::Base > > > belongs_to :user > > > has_one :entry_category > > > has_one :category, :through => :entry_category > > > end > > > > > I want to sum the price of all entries and include the category name. > > > I can get all the entries grouped properly like so.... > > > > > @entries = Entry.sum(:price, :conditions => ['user_id = 1'], :include > > > => :entry_category, :group => 'entry_categories.category_id') > > > > > ...how do I also get the category.name? If I try and include > > > categories, the query doesn't work which makes me think i have a > > > problem with my model associations. > > > > > Any help would be greatly appreciated. > > > > > Thanks, > > > -Alex > > > > -- > > ANDRES RODRIGUEZ E > > Electronic Engineer > > Software Developer > > IT Consultant > > > > US Phone: (305) 853-8356 > > Primary Mobile: +57-300-2006186 > > Secondary Mobile: +57-314-7939859 > > > -- ANDRES RODRIGUEZ E Electronic Engineer Software Developer IT Consultant US Phone: (305) 853-8356 Primary Mobile: +57-300-2006186 Secondary Mobile: +57-314-7939859 --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---