`device.id` возвращает` NULL` в работе, но отлично работает в разработке - PullRequest
1 голос
/ 30 ноября 2011

Я использую apn_on_rails для отправки push-уведомлений в приложении rails 3.0.9. Вот так:

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

У меня есть следующий метод регистрации токенов устройства:

# 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, но в производстве, используя mysql, device.id возвращает NULL Обе базы данных перенесены в последнюю версию. Я понятия не имею, почему это происходит, и любой совет о том, как поступить, очень ценится.

1 Ответ

0 голосов
/ 01 декабря 2011

Проблема была в том, что deviceToken был отправлен в окружении <>.ActiveRecord просто проигнорировал эти символы и создал запись без них, поэтому при первом регистрации устройства оно работало.Проблема возникла, когда ActiveRecord должен был найти токен устройства.device.id стал nil, но device.token все еще был верным.

В любом случае, когда мы изменили клиента, чтобы не отправлять <>, все работало отлично.

...