Использовать хэш поиска в Rails 3.x? - PullRequest
1 голос
/ 11 апреля 2011

Есть ли в Rails 3 какой-либо недеректированный параметр, в котором я могу передать структуру данных для выполнения запроса вместо использования метода цепочки методов?

Рассмотрим хэш, представляющий набор критериев для ограничения набора записей (скажем, Документы) ..

{
  :conditions => {
    :account_id => 2
  },
  :limit => 5,         # page size
  :offset => 5,        # (page-1) * page_size
  :sort => 'id DESC'
}

Это может быть связано с URL-адресом, таким как:

/documents.js?page_size=5&page=2&sidx=id&sord=DESC&filter[account_id]=2

И я хочу избежать любых вопросов важности порядка при переводе хэша в последовательную серию вызовов методов:

# which is 'right', or better ? 
Document.offset(5).where(:account_id => 2).limit(5)
Document.where(:account_id => 2).limit(5).offset(5)

Я обеспокоен тем, что программное преобразование набора критериев запроса, выведенных из параметров HTTP или объектов JSON, может быть более сложным, если мне придется обходить хеш и создавать вызовы цепочечных методов.

1 Ответ

1 голос
/ 11 апреля 2011

Вы можете использовать классический метод поиска:

Document.all :conditions => { :account_id => 2 }, :limit => 5, :offset => 5, :order => "id desc"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...