3

我有一个hotel模型,它的属性是:

id, hotel_name, address, searchable.

当我false为特定酒店设置可搜索时,当我在搜索字段中输入时,这家酒店不应该出现在下拉列表中。

控制器是

class HotelsController < Admin::BaseController
  autocomplete :hotel, :hotel_name, :full => true
end

我该如何优化这个

4

1 回答 1

4

在您的控制器中

def get_autocomplete_items(parameters)
  items = active_record_get_autocomplete_items(parameters)
  items = items.where(searchable: true)
end

在上面的示例中,我们调用active_record_get_autocomplete_items而不是super; 由于设计用于处理多个 ORM,因此这些方法是动态调用的,因此没有super。然而,在上面的示例ActiveRecord中是假设的,Mongoid并且MongoMapper当前也都支持(因为将来可能会支持其他示例)。上面的示例仍然有效,但根据您使用调用的 ORMactive_record_get_autocomplete_items(parameters)需要更改以匹配您的驱动程序,例如它将变为mongo_mapper_get_autocomplete_items(parameters)驱动MongoMapper程序。

使用范围

autocomplete :hotel, :hotel_name, :full => true, :scopes => [:searchable_allow]

在模型中

 scope :searchable_allow, where(searchable: true)  
于 2013-09-10T11:08:49.967 回答