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’).

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.

Thanks.

On 1 December 2012 14:08, sakthivel sekar [email protected]
wrote:

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

Colin,
Thanks for the reply. Yes, association makes this better and easy way.
But
I’m expecting a way apart from using association. I heard merge will
do
this, but I’m not sure.

On 11 December 2012 17:08, sakthivel sekar [email protected]
wrote:

Colin,
Thanks for the reply. Yes, association makes this better and easy way. But
I’m expecting a way apart from using association. I heard merge will do
this, but I’m not sure.

Why do you want to do it a way other than (as you say) the easiest?

Colin