我有一个hotel
模型,它的属性是:
id, hotel_name, address, searchable.
当我为特定酒店设置可搜索false
时,当我输入搜索字段时,这家酒店不应该出现在下拉菜单中。
控制器是
class HotelsController < Admin::BaseController
autocomplete :hotel, :hotel_name, :full => true
end
我怎样才能优化它
在控制器中
def get_autocomplete_items(parameters)
items = active_record_get_autocomplete_items(parameters)
items = items.where(searchable: true)
end
在上面的例子中,我们调用active_record_get_autocomplete_items
而不是super
;没有super,因为这些方法是动态调用的,因为设计是处理多个ORM。 在上面的示例中,假设ActiveRecord
,但是当前也支持Mongoid
和MongoMapper
(将来可能会支持其他版本)。 上面的示例仍然有效,但根据您使用的 ORM 调用active_record_get_autocomplete_items(parameters)
需要更改以匹配您的驱动程序,例如,对于MongoMapper
驱动程序来说,它会变得mongo_mapper_get_autocomplete_items(parameters)
。
使用范围
autocomplete :hotel, :hotel_name, :full => true, :scopes => [:searchable_allow]
在模型中
scope :searchable_allow, where(searchable: true)