2011-03-15 1 views
1

De console de rails, l'exécution du tableau suivant donne un résultat inattendu:User.where (: id => [1,2]) où. (: Id => 2) .arel.to_sql résultat inattendu

User.where(:id => [1,2]).where(:id => 2).arel.to_sql 
=> "SELECT `users`.* FROM `users` WHERE (`users`.`id` IN (1, 2) OR `users`.`id` = 2)" 

Je ne m'attends pas à ce que ce soit un OR.

Cet exemple est un exemple très simplifié d'un modèle tableless User je qui définit une méthode:

def cars 
    Car.where(:id => list_of_users_car_ids_not_from_the_database) 
end 

Cars sont conservés dans la base de données. Puis, plus tard dans un contrôleur

current_user.cars.find(params[:id]) 

(d'accord, c'est aussi un exemple simplifié, mais beaucoup plus représentatif de ce que je suis en train d'accomplir)

Répondre

Questions connexes