0

假设我有以下模型:

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'

但肯定有更优雅的方式。

4

1 回答 1

2

Searchlogic 可以与现有的命名范围组合,并且必须在虚拟属性的情况下。其中之一是:

 named_scope :name_like, lambda { |name| { :conditions => ['first_name LIKE  ? OR last_name LIKE ? OR middle_name LIKE ?', "%#{name}%","%#{name}%","%#{name}%"] }}
于 2010-05-11T19:06:42.520 回答