I have two models named Customer and Order.
Customer < ActiveRecord::Base
Order < ActiveRecord::Base
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
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,
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.