ActiveRecord порядок запросов - PullRequest
1 голос
/ 25 января 2011

Предположим, у меня есть следующие модели:

class Car < ActiveRecord::Base
  belongs_to :seat
  ...
end

class Seat < ActiveRecord::Base
  belongs_to :color
  ...
end 

class Color < ActiveRecord::Base
  attr_reader :name
  ...
end

Если у меня есть список автомобилей, и я хочу заказать автомобили по color.name , как написать запрос заказа?

class Car < ActiveRecord::Base
   belongs_to :seat
   ...
   def cars_order_by_color(car_ids)
       where(:id=>car_ids).order(?????) #HOW TO ORDER BY COLOR.name
   end   

 end

Ответы [ 2 ]

1 голос
/ 25 января 2011

Если вы используете joins в своем запросе, вы можете затем отсортировать по объединенным таблицам (либо seats, либо colors):

Car.joins(:seat => :color).order("colors.name")
0 голосов
/ 25 января 2011

Чтобы извлечь записи из базы данных в определенном порядке, вы можете указать опцию: order для вызова find.

 Car.order("color")

Вы также можете указать ASC или DESC:

 Car.order("color DESC")

Для получения дополнительной помощи в запросе смотрите здесь: active_record_querying

Надеюсь, это поможет.

Редактировать

Вы можете использовать find_by_sql:

Car.find_by_sql("SELECT * FROM clients
  INNER JOIN orders ON clients.id = orders.client_id
  ORDER clients.created_at desc")

Написать соответствующий запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...