TodoList: ユーザ情報を追加 ― 2006年12月16日 11時34分50秒
連絡先と言えば、電話番号、ファックス番号、住所ぐらいだろうか。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: http://uyota.asablo.jp/blog/2006/12/16/1031818/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。