2010-05-10 122 views
0

比方说,我有以下型号: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' 

courese我可以构建一个大的声明,如:

Person.search.first_name_like_or_last_name_like_or_... 'argh' 

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

+0

什么是应该由Searchlogic方法构建的SQL? – 2010-05-10 09:38:25

+0

对不起,我对SQL不太好。从不需要感谢RoR和插件searchlogic。 – 2010-05-11 05:11:05

回答

2

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

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