AFAIK, Searchlogic не поддерживает какие-либо белые списки доступных для поиска областей действия из коробки.Самый простой подход - написать метод уничтожения любых хеш-ключей, которые явно не авторизованы:
class Hash
def sanitize_keys!(*allowed)
self.each do |key, value|
self.delete(key) unless allowed.include? key
end
end
end
# in your controller...
params[:search].andand.sanitize_keys!(:in_stock, :price_gte) # etc...
Не отлично, но не плохо, и это, безусловно, выполнит свою работу.В Rails 3, использующем meta_search, вы можете вносить в белый список ваши области поиска для поиска на уровне модели, что является превосходным подходом.Вероятно, вы могли бы расширить Searchlogic и для достижения этой же функциональности.