Кажется, что у вас есть две части вашего приложения - веб-интерфейс с поддержкой вашего сервиса и аппаратный интерфейс, который связывает пользователя с физическим устройством. Возможно, я ошибаюсь, но я сомневаюсь, что при развертывании приложения вы ожидаете, что пользователь перейдет в ваш центр обработки данных для сканирования в своем теге!
Я вижу очевидное разделение - вам необходимо иметь считыватель RFID физически рядом с пользователем, чтобы он мог махать меткой RFID перед считывателем и выполнять какие-то действия, а затем вторую часть, где пользователь находится в дома и не имеет доступа к считывателю RFID.
Я бы предложил хранить эти две части как отдельные приложения и иметь некоторую логику, которая связывает несколько RFID с пользователем. В Rails / Active Record у вас может быть модель User и ассоциация has_many с тегом.
Вам необходимо создать два приложения - приложение Rails и легкое настольное приложение. Настольное приложение запускается локально на вашем «сканирующем» компьютере. Начать с этого может быть демон: посмотрите гемы "daemon", "daemonize" и "daemon-kit".
В вашем приложении Rails вы затем создаете маршрут для создания связи между пользователем и меткой RFID. Например. POST для / users /: id / tags
Небольшое приложение, которое вы написали выше, должно отправить POST по этому адресу. Но как приложение узнает, с каким именем пользователя ассоциируется тег? Не зная точно, что ты делаешь, я не могу советовать. После распознавания RFID вы можете просто запросить имя пользователя (STDIN.gets) и ввести его в командной строке, или в более сложном приложении сгенерировать какой-нибудь токен, который является уникальным и считывается через GET из приложения сканирования. .
Например. Вы можете запустить это как демон, чтобы связать метку RFID с пользователем:
require 'rubygems'
require 'nfc'
require 'httparty'
class TagAssociator
include HTTParty
base_uri 'example.com'
end
NFC.instance.find do |tag|
puts "What is your username?"
username = STDIN.gets
TagAssociator.post('/users/#{username}/tags', :query => {:uid => tag.uid})
end