2013-03-29 8 views
0

Я использую следующий запрос ActiveRecord, и я не уверен, что это правильный способ сделать что-то.Фильтр и сортировка по рубину на рельсах

У меня есть модель, которую я должен фильтровать и сортировать.

Match.where("host_id = #{self.id} OR guest_id = #{self.id}").order('week asc')

Это то переводится на:

SELECT "matches".* FROM "matches" WHERE (host_id = 1 OR guest_id = 1).

Это приводит меня к мысли, что сортировка не делается на уровне базы данных.

Есть ли способ заставить его сортировать на уровне базы данных без необходимости писать явный SQL-запрос?

Лучше для сортировки в базе данных или после ее перетаскивания?

+1

это странно. где вы получили эквивалент sql? Попробуйте вызвать '.to_sql', чтобы увидеть, что запрос переводит на sql. – jvnill

+0

Определенно лучше разгрузить сортировку в базу данных. Это одна из вещей, которые ActiveRecord делает для вас, не имея необходимости писать фактический SQL. – depa

+0

Вы вытаскиваете полученный sql из своего общего журнала запросов? –

ответ

0

использование/методы sort_by сортировки или попробовать Match.where("host_id = #{self.id} OR guest_id = #{self.id} ORDER BY week ASC") использовать .to_sql

Смежные вопросы