I've fixed my issues. Should have been using joins vs includes as there was really no joins happening with eager loading.
On Apr 23, 11:14 am, Will Prater <[email protected]> wrote: > Hi, > > Sure, here is the schema, and model files. Let me know what you > think. Why can't I get the :select to work when using ".includes". > In the console examples below, you can see the pay_rate and bill_rate > are not present in the example using .includes. > > Schemahttps://gist.github.com/76e70c7f31b6dcc5cfcc > > Consultant Modelhttps://gist.github.com/93e5858417bb14ec18c9 > > Project Modelhttps://gist.github.com/8545e9da49742b4e4dcb > > Console output using .includes does not honor :select > ======================================== > ruby-1.8.7-p249 > > Project.includes(:consultants).first.to_json(:include => :consultants) > => "{\"start_date\":null,\"name\":\"Widget Assembly\",\"created_at\": > \"2010-04-22T22:52:29Z\",\"updated_at\":\"2010-04-22T22:52:29Z\", > \"sales_contact_id\":null,\"id\":1,\"enabled\":true,\"client_id\": > 1,\"consultants\":[{\"created_at\":\"2010-04-22T22:52:29Z\", > \"updated_at\":\"2010-04-23T02:35:58Z\",\"recruiter_contact_id\": > 1,\"payclass\":2,\"id\":1,\"enabled\":true,\"phone\":\"\",\"last_name > \":\"Wright\",\"first_name\":\"Steve\",\"email\":\"[email protected] > \"}],\"end_date\":null}" > > Console output using does honor :select, but uses N + 1 queries for > all the consultants in a project > ======================================== > ruby-1.8.7-p249 > Project.first.to_json(:include => :consultants) > => "{\"start_date\":null,\"name\":\"Widget Assembly\",\"created_at\": > \"2010-04-22T22:52:29Z\",\"updated_at\":\"2010-04-22T22:52:29Z\", > \"sales_contact_id\":null,\"id\":1,\"enabled\":true,\"client_id\": > 1,\"consultants\":[{\"start_date\":null,\"pay_rate\":\"40\", > \"created_at\":\"2010-04-22T22:52:29Z\",\"updated_at\": > \"2010-04-23T02:35:58Z\",\"recruiter_contact_id\":1,\"project_id\": > \"1\",\"consultants_projects_id\":\"1\",\"bill_rate\":\"80\",\"payclass > \":2,\"id\":1,\"enabled\":true,\"consultants_projects_enabled\":\"t\", > \"phone\":\"\",\"last_name\":\"Wright\",\"end_date\":null,\"first_name > \":\"Steve\",\"email\":\"[email protected]\"}],\"end_date\":null}" > > Any help is appreciated. Am I doing something wrong, or is this just > not supported? > > -Will > > On Apr 23, 7:17 am, tommy xiao <[email protected]> wrote: > > > > > > > hi,Will > > can you use gist to provide more code? it is examine your code. > > > 2010/4/23 tommy xiao <[email protected]> > > > > interest topic. in console, use to_sql to represent SQL, Maybe found more > > > hits. > > > > 2010/4/23 Will Prater <[email protected]> > > > > More observations I've found. The Arel includes method does not seem > > >> to respect HMT :select joins. I'd prefer to use the "includes" lazy- > > >> laoding way, but cannot seem to get the extra attributes to come back. > > > >> Both will return the Manager Model > > >> ==================================== > > >> ruby-1.8.7-p249 > p = Project.first.managers.first > > >> => #<Manager id: 1, first_name: "Edward", last_name: "Scissorhands", > > >> email: nil, phone: nil, created_at: "2010-04-22 22:52:29", updated_at: > > >> "2010-04-22 22:52:29"> > > > >> ruby-1.8.7-p249 > p = Project.includes(:managers).first.managers.first > > >> => #<Manager id: 1, first_name: "Edward", last_name: "Scissorhands", > > >> email: nil, phone: nil, created_at: "2010-04-22 22:52:29", updated_at: > > >> "2010-04-22 22:52:29"> > > > >> Notice that all the extra attributes are NOT passed > > >> =================================== > > >> ruby-1.8.7-p249 > p = > > >> Project.includes(:managers).first.managers.first.to_json > > >> => "{\"created_at\":\"2010-04-22T22:52:29Z\",\"updated_at\": > > >> \"2010-04-22T22:52:29Z\",\"id\":1,\"phone\":null,\"last_name\": > > >> \"Scissorhands\",\"first_name\":\"Edward\",\"email\":null}" > > > >> Notice that all the extra attributes are passed > > >> =================================== > > >> ruby-1.8.7-p249 > p = Project.first.managers.first.to_json > > >> => "{\"created_at\":\"2010-04-22T22:52:29Z\",\"updated_at\": > > >> \"2010-04-22T22:52:29Z\",\"project_id\":\"1\",\"primary\":\"t\", > > >> \"manager_id\":\"1\",\"id\":1,\"phone\":null,\"last_name\": > > >> \"Scissorhands\",\"first_name\":\"Edward\",\"email\":null}" > > > >> Here is the setup in my Model > > >> =================================== > > >> has_many :managers_projects > > >> has_many :managers, :through => :managers_projects, > > >> :select => 'managers.*, managers_projects.project_id, > > >> managers_projects.manager_id, managers_projects.`primary`' > > > >> On Apr 21, 5:00 pm, Will Prater <[email protected]> wrote: > > >> > Hello, > > > >> > How can one get the extra attributes from the association table while > > >> > using lazy loading like so: > > > >> > # I have a HMT (rails3) association and am using the includes method > > >> > to prepare my queries. But Im not able to get at the extra fields in > > >> > the association table this way. > > > >> > # Schema > > >> > create_table "consultants_projects", :force => true do |t| > > >> > t.integer "consultant_id" > > >> > t.integer "project_id" > > >> > t.integer "pay_rate" > > >> > t.integer "bill_rate" > > >> > t.date "start_date" > > >> > t.date "end_date" > > >> > t.boolean "enabled", :default => true > > >> > end > > > >> > add_index "consultants_projects", ["consultant_id"], :name => > > >> > "index_consultants_projects_on_consultant_id" > > >> > add_index "consultants_projects", ["project_id"], :name => > > >> > "index_consultants_projects_on_project_id" > > > >> > # Model > > >> > class Project < ActiveRecord::Base > > >> > has_many :managers_projects > > >> > has_many :managers, :through => :managers_projects > > > >> > # We want all the extra fields on the consultants_projects > > >> > association > > >> > has_many :consultants_projects > > >> > has_many :consultants, > > >> > :through => :consultants_projects, > > >> > :select => 'consultants.*, consultants.id,'+ > > >> > 'consultants_projects.id as consultants_projects_id, ' > > >> > + > > >> > 'consultants_projects.project_id,' + > > >> > 'consultants_projects.pay_rate,' + > > >> > 'consultants_projects.pay_rate,' + > > >> > 'consultants_projects.bill_rate,' + > > >> > 'consultants_projects.start_date,' + > > >> > 'consultants_projects.end_date,' + > > >> > 'consultants_projects.enabled AS > > >> > consultants_projects_enabled' > > > >> > end > > > >> > # c = Consultant.includes(:projects) > > >> > # c.first.projects > > >> > # > > >> > # Does not include the extra fields like pay_rate, bill_rate etc that > > >> > are stored in the association table. > > > >> > -- > > >> > 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 athttp:// > > >> 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. > > > > -- > > > tommy xiao > > > E-mail: xiaods(AT)gmail.com > > > -- > > tommy xiao > > E-mail: xiaods(AT)gmail.com > > > -- > > 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 > > athttp://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 > athttp://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.

