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 --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---

