Rails meta_search больше и меньше условий в одном выпадающем списке
У меня есть модель Phone
с checked_by
поле; если это поле равно 1, то мы знаем, что этот телефон не проверен, иначе (>1) - проверено. На стороне администратора я могу просмотреть список Phones
и мне нужно создать фильтр, используя meta_search для обзора:
- Все телефоны
- Проверено
- непроверенный
я могу видеть checked_by_greater_than
, или же checked_by_less_than
методы в meta_search, но как объединить эти методы в одном окне выбора?
Спасибо за любой совет
1 ответ
Решение
С размахом и вымышленным полем.
Область применения:
class Phone < ActiveRecord::Base
scope :checked, lambda { |value|
!value.zero? ? checked_by_greater_than(1) : where(:checked_by => 1)
}
end
Затем добавьте поле выбора с тремя значениями, возвращая [nil, 0, 1]
в качестве значений, и в вашем контроллере используйте этот параметр для применения новой области.
class PhonesController < ApplicationController
def index
# ...
@phones ||= Phone.scoped
checked_select_value = params.delete("checked_select") # here use the name of your form field
if checked_select_value.present?
@phones = @phones.checked(checked_select_value.to_i)
end
# now apply the rest of your meta-search things to the @phones
#
end
end