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
où 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)