searchlogic和虚拟属性

时间:2010-05-10 07:50:19

标签: ruby-on-rails searchlogic

假设我有以下型号:

Person <AR
 def name
  [self.first_name,self.middle_name,self.last_name].select{|n| n.present?}.join(' ')
 end
end

我如何使用searchlogic搜索虚拟属性,例如:

Person.search.name_like 'foo'

我可以构建一个大型语句,如:

Person.search.first_name_like_or_last_name_like_or_... 'argh'

但肯定有一种更优雅的方式。

1 个答案:

答案 0 :(得分:2)

Searchlogic可以与现有的命名范围结合使用,并且必须包含虚拟属性。其中之一就是:

 named_scope :name_like, lambda { |name| { :conditions => ['first_name LIKE  ? OR last_name LIKE ? OR middle_name LIKE ?', "%#{name}%","%#{name}%","%#{name}%"] }}