Как получить доступ к данным рельсов в драгоценном камне?

Я использую faye и частный паб в качестве push-сервера. Мне нужно обновить статус пользователя до онлайн, когда он подписывается на канал.

Я разветвил гем private_pub и изменил некоторый код, мое приложение отправляет user_id, но я не знаю, как найти пользователя и обновить его статус, потому что в геме срабатывает событие подписки.

module PrivatePub
  # This class is an extension for the Faye::RackAdapter.
  # It is used inside of PrivatePub.faye_app.
  class FayeExtension

    def incoming(message, callback)
      p "user_id = #{message['ext']['user_id']}"
      if message["channel"] == "/meta/subscribe"
        authenticate_subscribe(message)
        # user = User.find(message['ext']['user_id'])
        # user.status = 'online'
        # user.save
      elsif message["channel"] !~ %r{^/meta/}
        authenticate_publish(message)
      end
      callback.call(message)
    end
  end
end

Я могу получить user_id, но не могу использовать модель пользователя в драгоценном камне. Как лучше всего это сделать?


person Alex    schedule 28.10.2012    source источник
comment
как вы можете иметь user_id внутри объекта сообщения?   -  person Chamnap    schedule 06.11.2014


Ответы (1)


Попробуйте добавить окружение в private_pub.rb. Например

require File.expand_path("../config/environment", __FILE__)
person Avanes    schedule 22.11.2013