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
Другие вопросы по тегам