On 1 December 2012 14:08, sakthivel sekar <sakthivelsekar33@gmail.com> wrote:
> 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
--
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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
No comments:
Post a Comment