Как отсортировать и выбрать первые несколько предметов в Rails - PullRequest
2 голосов
/ 19 декабря 2010

Этот вопрос является своего рода расширением Другой вопрос , поэтому я буду использовать его в качестве основы для этого вопроса.

Скажем, у меня есть куча билетов, которые я хотел бы получить и отсортировать по имени. Это достаточно просто, просто сделайте:

@tickets = Ticket.find(:all, :order => 'name')

Однако есть ли способ сообщить Ticket.find, что я хочу только первые x билетов? Бьюсь об заклад, есть способ сделать это с прямым SQL, и я уверен, что я мог бы просто взять @tickets и сократить его до первых x элементов, но я бы предпочел сделать это прямым способом Ruby, который приобрести все билеты (у меня очень много «билетов», и я действительно не хочу получать их все, это может стоить много процессорного времени).

Вся помощь приветствуется и спасибо заранее!

Ответы [ 3 ]

5 голосов
/ 19 декабря 2010

Все, что вы хотите сделать, это:

@tickets = Ticket.find(:all, :order => 'name', :limit => x)

Где x - сколько записей вы хотите.

См. документацию по Rails , чтобы узнать больше условий, которые вы можете добавить в find (Поиск по VALID_FIND_OPTIONS.)

1 голос
/ 19 декабря 2010

.. и если вы используете Rails 3, вы можете сделать это

@tickets = Ticket.order('name').limit(x).all
1 голос
/ 19 декабря 2010

Это просто расширение параметра limit в SQL.Например, SELECT * FROM ticket ORDER BY name LIMIT 4.Таким образом, он доступен в любом ORM, включая ActiveRecord.

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