TodoList: ユーザ情報を追加2006年12月16日 11時34分50秒

複数の人達で TodoList を使えるようにするのなら、メール以外の連絡先も必要になるだろう。ユーザ情報に追加する。

連絡先と言えば、電話番号、ファックス番号、住所ぐらいだろうか。users テーブルは user_engine も使うので、contacts などと別のテーブルを準備して、一対一の対応を使って結びつける手もある。今回は、わざわざ別にテーブルを準備しないで、新たに項目を追加することにした。


% cat add_contacts.mysql 
USE 'todos';
ALTER TABLE users ADD title VARCHAR(20);
ALTER TABLE users ADD phone VARCHAR(20);
ALTER TABLE users ADD fax VARCHAR(20);
ALTER TABLE users ADD address VARCHAR(100);
% cat add_contacts.mysql | mysql
% echo 'use todos; describe users;' | mysql | tail
created_at      datetime        YES             NULL
updated_at      datetime        YES             NULL
logged_in_at    datetime        YES             NULL
deleted int(11) YES             0
delete_after    datetime        YES             NULL
organization_id int(11) YES             NULL
title   varchar(20)     YES             NULL
phone   varchar(20)     YES             NULL
fax     varchar(20)     YES             NULL
address varchar(100)    YES             NULL

新しい項目が末尾に追加された。

http://localhost:3000/user/list のページはデータベースの項目と値を ActiveRecord を通して、動的に取得しているため、何もしなくても電話番号等の新しい情報は表示される。しかし、ユーザ編集の画面は特別な書式で準備されているので、変更する必要がある。


% cvs diff app/views/user/_edit.rhtml
diff -u -r1.4 _edit.rhtml
--- app/views/user/_edit.rhtml  13 Dec 2006 05:27:41 -0000      1.4
+++ app/views/user/_edit.rhtml  15 Dec 2006 06:05:36 -0000
@@ -12,6 +12,10 @@
     <%= form_input changeable(user, "login"), "Login ID", "login", :size => 30 %><br/>
     <%= form_input changeable(user, "email"), "Email", "email" %>
 
+    <%= form_input changeable(user, "title"), "Title", "title" %>
+    <%= form_input changeable(user, "phone"), "Phone", "phone" %>
+    <%= form_input changeable(user, "address"), "Address", "address" %>
+
    <tr class="two_columns">
    <td class="prompt"><lable>Organization:</label></td>
    <td class="value">

元にある記述を基に新しい項目を追加する。なお、list のページでは organization は自動では表示されていない。その兼ね合いで、organization は list のページの最後に表示される。それに合わせて、_edit.rhtml も organization は最後にくるようにした。

また、電話番号などは自由に書き換えられる様にするために、変更可能にする必要がある。config/environment.rb にて指定できる。


% cvs diff config/environment.rb
diff -u -r1.2 environment.rb
--- config/environment.rb       3 Dec 2006 20:34:58 -0000       1.2
+++ config/environment.rb       15 Dec 2006 06:04:10 -0000
@@ -54,6 +54,10 @@
 module LoginEngine
   config :salt, "your-salt-here"
   config :user_email_notification, false
+  config :changeable_fields,
+    [ 'firstname', 'lastname', 'login', 'email',
+    'organization_id', 'title', 'phone', 'fax', 'address'
+    ]
 end
 
 module UserEngine

さて、複数の人で TodoList を使うのなら、作成者が欲しい。

前回次回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2006/12/16/1031818/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。