2010-12-13 2 views
1

Je n'arrive pas à obtenir une syntaxe correcte ... peut-être que c'est une solution facile.Syntaxe SQL correcte dans les rails pour faire une recherche sur les objets créés après le datetime X

J'essaie de trouver tous les objets de commentaires créés après last_checked_mail

J'ai essayé ..

current_user.comments.find(:all, :conditions => ["created_at > ?, current_user.last_checked_mail"]) 

Mais qui retourne:

ActiveRecord::PreparedStatementInvalid: wrong number of bind variables (0 for 1) 

Répondre

2

Vous finissez la chaîne au mauvais endroit. Il devrait être:

["created_at > ?", current_user.last_checked_mail] 

Le message d'erreur indique que vous n'avez pas de variable pour sauvegarder votre '?' dans la requête. Pour chaque '?' Dans votre chaîne de requête, vous devez avoir un objet dans le tableau qui est lié à ce point d'interrogation. Puisque vous en avez un? Dans votre requête, les rails s'attendent à trouver une "variable de liaison" pour lier ce point d'interrogation. C'est parce que votre chaîne a englouti la variable que vous vouliez utiliser par erreur.

0

essayez ceci.

current_user.comments.find(:all, :conditions => ["created_at > ?", current_user.last_checked_mail]) 

Vous avez besoin de mettre les variables en dehors des citations ..

Questions connexes