0

次のモデルがあるとします。

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

次のような検索ロジックを使用して仮想属性を検索するにはどうすればよいですか。

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 に答える