Несколько условий с will_paginate - PullRequest
2 голосов
/ 10 июня 2010

Я использую will_paginate для нумерации страниц, но я не могу использовать более одного условия за раз. Например, если я хочу получить SQL-запрос, который заканчивается на «Где office_id = 5», то это довольно просто, я могу это сделать. но что, если я хочу сделать "Где office_id = 5 AND primary_first = 'Mark'"? Я не могу этого сделать. Я понятия не имею, как ввести несколько условий. Вы можете помочь ??

Ниже приведен пример моего кода:

def self.search(search, page, office_id)
  paginate :per_page => 5, :page => page,
           :conditions => ['office_id', "%#{office_id}"], # + ' and primary_first like ?', "%#{params[:search]}%"],
           #:conditions => ['primary_first', "%#{search}%"],
           :order => 'created_at'

конец

Спасибо за вашу помощь!

Ответы [ 2 ]

3 голосов
/ 10 июня 2010

Если я правильно понимаю, что вы хотите, это должно работать:

def self.search(search, page, office_id)
  paginate :per_page => :page => page,
           :conditions => ["office_id LIKE ? and primary_first LIKE ?", "%#{office_id}", "%#{search}%"]
           :order => :created_at
end
1 голос
/ 10 июня 2010

try :conditions => ["office_id = ? and primary_first = ?", office_id, search]

или с использованием динамического поиска:

paginate_by_office_id_and_primary_first(office_id, search, :per_page => 5, :page => page, :order => 'created_at')

Они будут работать только для эквивалентности, однако БД ее определяет.Если вам нужно использовать LIKE, см. ответ Jens Fahnenbruck

...