Active Record Query to select associated model values.

Hi, I have two models named Customer and Order.

Customer < ActiveRecord::Base has_many :orders end

Order < ActiveRecord::Base belongs_to :customer end

Customer model has attributes like first_name and last_name. Order has customer_id along with other attributes.

Now, I want Customer first_name for specific order. I can get it with following query.

Customer.joins(:orders).where('orders.id = 1').select('first_name').

You are missing the fundamental nature of ActiveRecord associations. If you have an order in, for example, @order then the customer is @order.customer and if you want that customer's first_name then you can say @order.customer.first_name. There is no need to mess about with complex queries, such is the magic of Rails.

But, how to get it along with attributes of order table also. Say, I want both customers first_name and orders table created_at value. When I try, Order.includes(:customer).select('orders.created_at, customers.first_name') this returns only order table records. What is the best way to select attributes of joined tables also with Active Record Query.

Have a look at the Rails Guide on ActiveRecord Associations (and the other guides for that matter) and work right through a good tutorial such as railstutorial.org (which is free to use online) and you will be able to answer most of these questions yourself.

Colin