Rails生成sql查询,WHERE 0 = 0

时间:2015-04-09 09:33:16

标签: ruby-on-rails ruby passenger

我们在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注入的痕迹。

可以指出事情可能出错的地方。

0 个答案:

没有答案