mysql - `device.id` 在生产中返回 `NULL`,但在开发中工作正常

标签 mysql ruby-on-rails ruby-on-rails-3 apple-push-notifications

我正在使用 apn_on_rails 在 Rails 3.0.9 应用程序中发送推送通知。像这样:

gem 'apn_on_rails', :git => 'https://github.com/natescherer/apn_on_rails.git', :branch => 'rails3'

我有以下注册设备 token 的方法:

# POST /iphones/register_device_token.json
def register_device_token
  @iphone = Iphone.find_or_create_by_unique_identifier(params[:unique_identifier])

  device = APN::Device.find_or_create_by_token(params[:device_token])

  logger.fatal "APN Device ID: #{device.id}"
  logger.fatal "APN Device token: #{device.token}"

  @iphone.apn_device_id = device.id

  respond_to do |format|
    if @iphone.save
      format.json { render :json => @iphone, :status => :created, :location => @iphone }
    else
      format.json { render :json => @iphone.errors, :status => :unprocessable_entity }
    end
  end

end

它在开发中运行良好,使用 sqlite3,但在生产中,使用 mysqldevice.id 返回 NULL。两个数据库都迁移到最新版本。我不知道为什么会这样,非常感谢任何关于如何进行的建议。

最佳答案

问题是发送的 deviceToken 被 <> 包围了. ActiveRecord只是忽略了这些字符并在没有它们的情况下创建了记录,因此设备第一次注册时就可以了。 ActiveRecord时出现问题应该找到设备 token 。 device.id变成了nil ,但是device.token仍然是正确的。

无论如何,当我们将客户端更改为不发送<>一切都很完美。

关于mysql - `device.id` 在生产中返回 `NULL`,但在开发中工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8326666/

相关文章:

PHP:查询,有什么问题?

Python aiomysql 在我的查询参数周围放置了一组引号

ruby-on-rails - 不妨碍访问者的 Rails 应用维护

Ruby 1.9 - 无效的多字节字符 (US-ASCII)

ruby - Rails 3- find_by 不工作

mysql - 在数据库 : do I miss some drawbacks in this particular situation? 中存储二进制文件

php - 计算时差

ruby-on-rails - 如何对rails中循环中的列执行加法运算

ruby-on-rails - 在 state_machine rails 中获取以前的状态

java - Jruby NoSuchMethodError : org. jruby.RubyClass.defineMethod