2010-10-04 5 views
1

Je suis sur rails 2.3.5rails trouver (: tous) faire ... comment ça marche?

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 

Ce code indique toujours qu'il fait la requête suivante dans les journaux de serveur:

select * from users 

même lorsque le :_search parm est true.

Que doit faire ce code? Ajouter où les conditions dépendent de la condition de recherche transmise?

PS: J'utilise rails plugin for jqgrid

Répondre

0

Eh bien, il est un peu intéressant, mais toutes les affectations à psuedo, nom, e-mail, le rôle sont ignorés.

La mise en forme est légèrement au-dessus, il devrait être

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 

Ainsi, le users = User.find(:all) do est un constructeur, et en prenant tout le reste du code à la fin comme params.

Il est un code assez de rails non standard, je pense qu'il essaie de construire des conditions si certaines params sont envoyés. Au lieu de cela, peut-être essayer ce condition builder

User.paginate(:page=>params[:page], :conditions=>build_conditions(params)) 
+0

condition Oui builder..that ce que je cherchais. Je vais lire à ce sujet. Mais qu'avez-vous changé dans le code? Quel format était désactivé? – samwick

+0

@samwick - dans votre exemple, "users =" et "if params" étaient alignés à gauche. La première fois que je l'ai lu, je ne me suis pas rendu compte que le si était sous User.find –