我正在使用缓存在表中的关键字构建搜索。在表中查找用户输入的关键字之前,它会被标准化。例如,删除了一些标点符号,如“-”,并对大小写进行了标准化。然后使用规范化的关键字来查找获取搜索结果。
我目前正在使用 before_filter 处理控制器中的标准化。我想知道是否有办法在模型中做到这一点。概念上类似于“before_find”回调的东西可以工作,尽管这对于实例级别没有意义。
您应该使用命名范围:
class Whatever < ActiveRecord::Base
named_scope :search, lambda {|*keywords|
{:conditions => {:keyword => normalize_keywords(keywords)}}}
def self.normalize_keywords(keywords)
# Work your magic here
end
end
使用命名作用域将允许您与其他作用域链接,这实际上是使用 Rails 3 的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)