Поисковые и виртуальные атрибуты - PullRequest
0 голосов
/ 10 мая 2010

Допустим, у меня есть следующая модель:

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 Ответ

2 голосов
/ 11 мая 2010

Searchlogic может комбинироваться с существующими именованными областями и должен быть в случае виртуальных атрибутов. Одним из таких будет:

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