137 votes

Rails 4 requête LIKE - ActiveRecord ajoute des guillemets

Je suis en train d'essayer de faire une requête de type like comme ceci

def self.search(search, page = 1 )
  paginate :per_page => 5, :page => page,
    :conditions => ["name LIKE '%?%' OR postal_code like '%?%'", search, search],   order => 'name'
end

Mais quand cela s'exécute, quelque chose ajoute des guillemets ce qui fait que l'instruction sql ressort comme ceci

SELECT COUNT(*)
FROM "schools" 
WHERE (name LIKE '%'havard'%' OR postal_code like '%'havard'%')):

Donc vous pouvez voir mon problème. Je suis en train d'utiliser Rails 4 et Postgres 9, tous les deux que je n'ai jamais utilisés donc je ne suis pas sûr si c'est une chose d'activerecord ou peut-être une chose de postgres.

Comment puis-je configurer cela pour avoir '%my_search%' dans la requête finale?

4voto

tihom Points 6812

Essayer

 def self.search(search, page = 1 )
    paginate :per_page => 5, :page => page,
      :conditions => ["name LIKE  ? OR postal_code like ?", "%#{search}%","%#{search}%"],   order => 'name'
  end

Voir la documentation sur les conditions AREL pour plus d'informations.

-1voto

Jeff Points 9
.find(:all, where: "value LIKE product_%", params: { limit: 20, page: 1 })

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X