アプリケーションには 2 つの部分があるようです。サービスへの Web 対応フロント エンドと、ユーザーを物理デバイスに関連付けるハードウェア フロント エンドです。私は間違っているかもしれませんが、アプリを展開するときに、ユーザーがタグをスキャンするためにデータセンターまで歩いて行くとは思えません!
明らかな分離が見られます。RFID リーダーを物理的にユーザーの近くに配置して、ユーザーがリーダーの前で RFID タグを振って何らかのアクションを実行できるようにする必要があります。次に、ユーザーが自宅にいて、 RFID リーダーにアクセスできません。
これら 2 つの部分を別々のアプリケーションとして保持し、複数の RFID をユーザーに関連付けるロジックを用意することをお勧めします。Rails / Active Record では、User モデルと、タグへの has_many 関連付けがある場合があります。
Rails アプリと軽量デスクトップ アプリケーションの 2 つのアプリケーションを作成する必要があります。デスクトップ アプリケーションは、「スキャン」マシンでローカルに実行されます。まず、デーモンである可能性があります。「daemons」、「daemonize」、および「daemon-kit」gem を見てください。
次に、Rails アプリで、ユーザーと RFID タグの間の関連付けを作成するためのルートを作成します。例えば。/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