从rails控制台,运行以下命令会产生意外结果:
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)"
我不希望这是OR
。
这个例子是我所定义的无表格User
模型的一个非常简化的例子:
def cars
Car.where(:id => list_of_users_car_ids_not_from_the_database)
end
其中Cars
保存在数据库中。然后在控制器中
current_user.cars.find(params[:id])
(好吧,这也是一个简化的例子,但更能代表我想要完成的事情)
答案 0 :(得分:1)
这些消息来源说它在3.0.3和3.0.4之间爆发,但他们已经将其修复为3.0.5。
http://www.ruby-forum.com/topic/1089054#new
http://groups.google.com/group/rubyonrails-core/browse_thread/thread/407f746fd1de6636
他们故意“打破”它(他们正在修复一个错误并认为新行为更好)。不过,它应该在3.0.5中恢复。