Ruby on rails 搜索逻辑和虚拟属性

Ruby on rails 搜索逻辑和虚拟属性,ruby-on-rails,searchlogic,Ruby On Rails,Searchlogic,假设我有以下模型: Person <AR def name [self.first_name,self.middle_name,self.last_name].select{|n| n.present?}.join(' ') end end 对于courese,我可以构造一个大型语句,如: Person.search.first_name_like_or_last_name_like_or_... 'argh' 但是肯定有一种更优雅的方式。Searchlogic可以与现有的命名

假设我有以下模型:

Person <AR
 def name
  [self.first_name,self.middle_name,self.last_name].select{|n| n.present?}.join(' ')
 end
end
对于courese,我可以构造一个大型语句,如:

Person.search.first_name_like_or_last_name_like_or_... 'argh'

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

Searchlogic可以与现有的命名作用域相结合,并且必须是在虚拟属性的情况下。其中之一是:

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

什么是Searchlogic方法应该构建的SQL?对不起,我不太擅长SQL。永远不需要感谢RoR和插件searchlogic。
 named_scope :name_like, lambda { |name| { :conditions => ['first_name LIKE  ? OR last_name LIKE ? OR middle_name LIKE ?', "%#{name}%","%#{name}%","%#{name}%"] }}