我们在ruby 1.9.3,rails 3.2.19和phusion passenger 3.0.19上运行一个Web应用程序。将ruby升级到2.1.5& phusion乘客到4.0.57,我们遇到了一些奇怪的db错误。
Rails生成了一些奇怪的查询,例如跟随一个和一些没有where
子句的查询。
UPDATE device SET checked_in_at = '2015-04-08 06:59:45', updated_at = '2015-04-08 06:59:45' WHERE 0 = 0
实际查询应该是:
UPDATE device SET checked_in_at = '2015-04-08 06:59:45', updated_at = '2015-04-08 06:59:45' WHERE id = 321213
class Device < ActiveRecord::Base
# other methods
def check_in!
self.checked_in_at = Time.zone.now
self.save(:validate => false)
end
end
class DeviceController < ApplicationController
# other methods
# PUT /devices/:device_guid_id
def update
device = Device.find_by_guid(params[:device_guid_id])
device.check_in!
end
end
它只发生过一次。 没有sql注入的痕迹。
可以指出事情可能出错的地方。