2011-07-04 11 views
1

この名前付きスコープは正常に動作しています。名前付きスコープの書き方を改善しましたか?

named_scope :search, lambda {|search_txt| 
     { 
     :conditions => ["field1 like ? or field2 like ? or field3 like ?","#{search_txt}%","#{search_txt}%","#{search_txt}%"] 
     } 
    } 

条件の中でsearch_txtを3回書くのではなく、条件内でsearch_txtを1回だけ渡して同じシナリオを処理できますか?

MyModel.all(:conditions=>['field_1 LIKE :q OR field_2 LIKE :q OR field_3 LIKE :q', {:q=> 'search_txt'}]) 

答えて

7

よう

何か:

named_scope :search, lambda {|search_txt| 
    { 
    :conditions => ["field1 like :q or field2 like :q or field3 like :q",{:q => "#{search_txt}%"}] 
    } 

}

1

これは動作するはずです:これはスコープで動作するかどうか、私は知らないが、条件を書くための別の方法がある

named_scope :search, lambda {|search_txt| 
     { 
     :conditions => ["field1 like ? or field2 like ? or field3 like ?","#{search_txt}%"] 
     } 

}

関連する問題