rails find (: all) do ... как это работает? - PullRequest
1 голос
/ 04 октября 2010

Я нахожусь на rails 2.3.5

    puts params[:_search]
    users = User.find(:all) do
    if params[:_search] == "true"
      puts "TESTTTTTTTTTTTTTT"
      pseudo    =~ "%#{params[:pseudo]}%" if params[:pseudo].present?
      firstname =~ "%#{params[:firstname]}%" if params[:firstname].present?
      lastname  =~ "%#{params[:lastname]}%" if params[:lastname].present?                
      email     =~ "%#{params[:email]}%" if params[:email].present?
      role      =~ "%#{params[:role]}%" if params[:role].present?        
    end
    paginate :page => params[:page], :per_page => params[:rows]      
    order_by "#{params[:sidx]} #{params[:sord]}"
  end

Этот код всегда показывает, что он выполняет следующий запрос в журналах сервера:

select * from users

, даже если :_search parm равен true.

Что должен делать этот код? Добавить, где условия в зависимости от переданных в условия поиска?

PS: я использую плагин rails для jqgrid

1 Ответ

0 голосов
/ 04 октября 2010

Ну, это довольно интересно, но все назначения псевдо, фамилии, электронной почты, роли игнорируются.

Форматирование было немного выше, оно должно быть

users = User.find(:all) do
  if params[:_search] == "true"
    puts "TESTTTTTTTTTTTTTT"
    pseudo    =~ "%#{params[:pseudo]}%" if params[:pseudo].present?
    firstname =~ "%#{params[:firstname]}%" if params[:firstname].present?
    lastname  =~ "%#{params[:lastname]}%" if params[:lastname].present?                
    email     =~ "%#{params[:email]}%" if params[:email].present?
    role      =~ "%#{params[:role]}%" if params[:role].present?        
    end
  paginate :page => params[:page], :per_page => params[:rows]      
  order_by "#{params[:sidx]} #{params[:sord]}"
end

Итак, users = User.find(:all) do является компоновщиком и принимает весь остальной код в конец как params.

Это довольно нестандартный код rails, я думаю, что он пытается создать условия, если определенные параметры передаютсяв. Вместо этого, возможно, попробуйте этот конструктор условий

User.paginate(:page=>params[:page], :conditions=>build_conditions(params))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...