2011-07-04 5 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를 세 번 쓰는 대신. 조건에서 search_txt를 한 번만 전달하여 동일한 시나리오를 처리 할 수 ​​있습니까? 이 일을해야

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 ? or field2 like ? or field3 like ?","#{search_txt}%"] 
     } 

같은 :

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

}

1

:

뭔가이 범위에서 작동하는지 모르겠어요,하지만 조건을 작성하는 또 다른 방법이

관련 문제