Лучший способ написать именованную область? - PullRequest
1 голос
/ 04 июля 2011

Эта именованная область работает нормально.

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 только один раз в условиях?

Что-то вроде

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

}

Ответы [ 2 ]

7 голосов
/ 04 июля 2011

Я не знаю, работает ли это в области видимости, но есть другой способ записать условия:

MyModel.all(:conditions=>['field_1 LIKE :q OR field_2 LIKE :q OR field_3 LIKE :q', {:q=> 'search_txt'}])
1 голос
/ 04 июля 2011

Это должно работать:

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

}

...