MetaSearch сортировать упорядоченный столбец - PullRequest
2 голосов
/ 18 сентября 2011

У меня есть модель:

class Event < ActiveRecord::Base
  default_scope :order => 'date_begin'
end

В файле просмотра есть ссылка на сортировку:

= sort_link @search, :date_begin

Когда я пытаюсь заказать date_begin как DESC, ничего не происходит, потому чтоSQL-запрос:

SELECT * FROM events ORDER BY date_begin, date_begin DESC

Как заставить MetaSearch переупорядочить этот столбец?(Я знаю, что в ActiveRecord есть метод «переупорядочения», но я не знаю, как применить его к MetaSearch)

Ответы [ 3 ]

1 голос
/ 18 сентября 2011

Вы можете использовать метод unscoped , когда вы решили использовать meta_search:

@search = Event.unscoped.search(params[:search])
0 голосов
/ 16 сентября 2012
@search = if params[:q] && params[:q][:s]
  # Ransack sorting is applied - cancel default sorting
  Event.reorder(nil).search(params[:q])
else
  # Use default sorting
  Event.search(params[:q])
end

Преимущества:

1) только отменяет: область заказа - полезно, если у вас есть .where (: dele_at => nil) .order (: date_begin) область по умолчанию.

2) использует порядок по умолчанию, когда сортировка Ransack не применяется.

0 голосов
/ 14 декабря 2011

Я также хотел использовать порядок сортировки по умолчанию и не придумал никакого другого способа, кроме как принудительно установить порядок по умолчанию в контроллере, не используя какой-либо объем порядка в модели:

search = {"meta_sort" => "created_at.desc"}.merge(params[:search] || {})
@search = Photo.search(search)

Порядок сортировки по умолчанию - create_at DESC, но он будет перезаписан, если в параметрах будет получен новый порядок сортировки. Кажется, работает на меня.

...