2010-08-05 2 views
0

J'ai écrit cette déclaration de récupération pour vérifier si un rendez-vous en cours d'enregistrement ou créé un conflit avec un qui est déjà enregistré. mais ça ne marche pas, quelqu'un peut-il me diriger vers où je vais mal?recherche d'un modèle dans des rails pour 2 valeurs?

@new_appointment = :appointment #which is the params of appointment being sent back from submit. 
@appointments = Appointment.all(:conditions => { :date_of_appointment => @new_appointment.date_of_appointment, :trainer_id => @new_appointment.trainer_id} 

)

l'erreur est de la :date_of_appointment => @new_appointment.date_of_appointment ce sera toujours fausse:

merci

+0

Comment ça ne marche pas? –

+0

À quoi ressemble votre modèle 'Appointment'? Pouvez-vous s'il vous plaît poster ici. –

+0

question mise à jour. nouveau problème venir. Je ne savais pas si je devais créer une nouvelle question ou simplement mettre à jour celui-ci. –

Répondre

3

À première vue, il ne semble pas être quelque chose de mal avec votre syntaxe. Ma conjecture est que @new_appointment ne contient pas les valeurs que vous attendez, et donc la requête de base de données renvoie des valeurs différentes que vous attendez.

Essayez le dumping sur @new_appointment.inspect ou vérifier les fichiers journaux pour voir ce que SQL le Finder est produit, ou utilisez

Appointment.send(:construct_finder_sql, :conditions => { 
    :date_of_appointment => @new_appointment.date_of_appointment, 
    :trainer_id => @new_appointment.trainer_id 
}) 

pour voir le SQL qui sera généré (construct_finder_sql est une méthode ActiveRecord::Base protégée).


mise à jour en fonction de votre modifier

@new_appointment = :appointment devrait être quelque chose comme @new_appointment = Appointment.new(params[:appointment]). :appointment est juste un symbole, il n'est pas automatiquement lié à vos params à moins que vous le disiez.

+0

Salut j'ai mis à jour la question, oui vous avez raison, pour une raison quelconque, il a date_of_appointment avec 3 valeurs différentes, "date_of_appointment (2i)" => "3", "date_of_appointment (3i)" => "10", " date_of_appointment (1i) "=>" 2012 " comment puis-je faire le contrôle? merci –

+0

Je ne suis pas vraiment sûr de ce que vous entendez par 1i, 2i et 3i ... –

+2

Ils viennent de date_select helper et peuvent être convertis en tant que tel: http://gist.github.com/331737 – mark

Questions connexes