kru*_*hah 1 ruby named-scope ruby-on-rails
这个命名范围工作正常.
named_scope :search, lambda {|search_txt|
{
:conditions => ["field1 like ? or field2 like ? or field3 like ?","#{search_txt}%","#{search_txt}%","#{search_txt}%"]
}
}
Run Code Online (Sandbox Code Playgroud)
而不是在条件下三次写search_txt.在条件中只传递一次search_txt可以处理相同的场景吗?
就像是
named_scope :search, lambda {|search_txt|
{
:conditions => ["field1 like ? or field2 like ? or field3 like ?","#{search_txt}%"]
}
Run Code Online (Sandbox Code Playgroud)
}
我不知道这是否适用于范围,但还有另一种写条件的方法:
MyModel.all(:conditions=>['field_1 LIKE :q OR field_2 LIKE :q OR field_3 LIKE :q', {:q=> 'search_txt'}])
Run Code Online (Sandbox Code Playgroud)