Es scheint, dass Sie zwei Teile Ihre Anwendung - ein Web-fähiges Frontend für Ihren Dienst und ein Hardware-Frontend, das einen Benutzer mit einem physischen Gerät verbindet Ich liege möglicherweise falsch, aber ich bezweifle, dass Sie bei der Bereitstellung der App erwarten, dass der Benutzer zu Ihrem Gerät gelangt Rechenzentrum zum Einlesen ihres Etiketts!
Ich kann eine offensichtliche sep sehen - Sie benötigen ein RFID-Lesegerät, das sich physisch in der Nähe des Benutzers befindet, damit sie das RFID-Tag vor dem Lesegerät schwenken und eine Art von Aktion ausführen können. In einem zweiten Teil ist der Benutzer zu Hause und hat keinen Zugriff auf das RFID Leser.
Ich würde vorschlagen, diese beiden Teile als separate Anwendungen zu halten und einige Logik, die mehrere RFIDs zu einem Benutzer verbindet. In Rails/Active Record haben Sie möglicherweise ein Benutzermodell und eine has_many-Zuordnung zu einem Tag.
Sie müssen zwei Anwendungen erstellen - Ihre Rails-App und eine leichtgewichtige Desktop-Anwendung. Die Desktop-Anwendung wird lokal auf Ihrem 'Scan'-Computer ausgeführt. Um damit anzufangen könnte ein Daemon sein: Sieh dir die Daemons, Daemonize und Daemon Kits an.
In Ihrer Rails-App erstellen Sie dann eine Route zum Erstellen der Zuordnung zwischen einem Benutzer und einem RFID-Tag. Z.B. POST an/users /: id/tags
Die kleine Anwendung, die Sie oben geschrieben haben, muss einen POST an diese Adresse senden. Aber woher weiß die Anwendung, mit welchem Benutzernamen das Tag verknüpft werden soll? Ohne genau zu wissen, was Sie tun, kann ich nicht beraten. Nach dem Erkennen eines RFID können Sie einfach nach dem Benutzernamen (STDIN.gets) fragen und ihn in der Befehlszeile eingeben oder in einer komplizierteren Anwendung eine Art Token generieren, das eindeutig ist und über ein GET von der Scan-Anwendung eingelesen wird .
Eg. Man könnte dies als Daemon ausführen, um eine RFID-Tag mit einem Benutzer zuzuordnen:
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
in der Regel diese Art von Geräten haben eine Möglichkeit, die Tastatur und geben Sie den Code direkt auf die Benutzeroberfläche zu ersetzen, ohne Prozess benötigt. Selbst wenn Sie in Ihrem Fall eine serverseitige Verarbeitung durchführen müssen, müssen Sie höchstwahrscheinlich die ursprünglichen Daten an das Benutzerformular senden. –