2011-08-20 3 views
0

Essayer d'implémenter une recherche simple avec RoR et Heroku. Cela fonctionne bien sur localhost mais dès que j'appuie sur Heroku, la recherche ne donne aucun résultat. J'utilise SQlite localement et Heroku utilise Postgres, n'est-ce pas? Je pense que c'est le problème, mais après un peu de recherche, je n'arrive pas à trouver la solution. Une idée de ce qui pourrait se passer? Aide appréciée comme toujours.Pourquoi cette requête ne fonctionne-t-elle pas sur Heroku?

def self.search(search) 
    if search 
    where("title LIKE ? OR description LIKE ?", "%#{search}%", "%#{search}%") 
    else 
    find(:all) 
    end 
end 

Répondre

4

Probablement parce que SQLite's LIKE est (partiellement) insensible à la casse, mais PostgreSQL's LIKE est sensible à la casse. Essayez ceci:

where("LOWER(title) LIKE ? OR LOWER(description) LIKE ?", "%#{search.downcase}%", "%#{search.downcase}%") 

PostgreSQL a également ILIKE en cas de la version insensible, mais SQLite COMME (ni SQL standard) ne pas vous ne devriez pas utiliser ILIKE à moins que vous ciblez spécifiquement PostgreSQL.

Et de passer votre environnement de développement à PostgreSQL si vous publiez sur Heroku, vous vous épargnerez un peu de chagrin et de confusion.

Une autre possibilité est que vous ne possédez aucune donnée (ou aucune donnée correspondante) dans votre base de données Heroku.

+0

Qui a pris soin d'elle. Def besoin de basculer mon environnement de développement. Merci de votre aide. –

Questions connexes