通常 RoR では、テーブルには自動的に id フィールドが追加され、この id でアクセスするようになっている。まぁ、これはこれで便利でいいのだが、今回作成しようと思っている日程調整アプリでは、
1. 誰でも新たな日程調整が始められる
2. 他人の日程調整は簡単に覗けないようにする
という仕様にしているので、このままだとちょっと都合が悪い。
イベントごとにパスワードを設けるという方法もあるが、何でもかんでもパスワード入力を求めるのは個人的に好きではないので、イベントにUUIDを割り当て、それでアクセスする。こうすることで、1,2 の仕様を満たすこととした。(UUIDに関してはここを参照のこと)
そんな理由もあって、イベントテーブルには uuid というフィールドを設けてあったわけだが、これはユーザに入力させるものではないので、自動で入力させる必要がある。それをどうやって実現するかだが、とりあえずは、新規作成ページ(app/view/events/new.html.erb)の頭のほうに
<% @event.uuid = rand(256**16).to_s(16) %>
と書いて自動的に uuid に値を埋めるようにした。
UUID の生成方法はちゃんとした方法もあるだろうし、 plugin もあるようだが、面倒なので上のようにした。
また、同じく new.html.erb で uuid の部分を以下のように hidden フィールドにした。
<%= f.hidden_field :uuid %>
もちろん、そのすぐ上のテキスト表示はコメントアウトなりして消しておく。
ただ一点気になるのはUUIDの重複である。UUIDは一応、「重複や偶然の一致」を想定しなくていいとはなっているが、チェックできるならチェックしておきたところである。が、とりあえず今のところは先送りで… (validate とかでやるのかな?)
0 件のコメント:
コメントを投稿