今回は 002_create_user.rb です。
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users, :force => true do |t|
t.string :uuid, :limit => 36
t.string :username, :null => false, :default => "", :limit => 32
t.string :email, :null => false, :default => "", :limit => 64
t.string :first_name, :limit => 32
t.string :last_name, :limit => 32
t.string :title, :limit => 64
t.string :company, :limit => 64
t.string :alt_email, :limit => 64
t.string :phone, :limit => 32
t.string :mobile, :limit => 32
t.string :aim, :limit => 32
t.string :yahoo, :limit => 32
t.string :google, :limit => 32
t.string :skype, :limit => 32
# >>> The following fields are required and maintained by [authlogic] plugin.
t.string :password_hash, :null => false, :default => ""
t.string :password_salt, :null => false, :default => ""
t.string :remember_token, :null => false, :default => ""
t.string :perishable_token, :null => false, :default => ""
t.string :openid_identifier
t.datetime :last_request_at
t.datetime :last_login_at
t.datetime :current_login_at
t.string :last_login_ip
t.string :current_login_ip
t.integer :login_count, :null => false, :default => 0
# >>> End of [authlogic] maintained fields.
t.datetime :deleted_at
t.timestamps
end
add_index :users, [ :username, :deleted_at ], :unique => true
add_index :users, :email
add_index :users, :last_request_at
add_index :users, :remember_token
add_index :users, :perishable_token
end
def self.down
drop_table :users
end
end
特に変わったところはなさそうです。
ただ、ユーザの識別子として、uuidを使用しているようです。
ところがテーブルのデータを見てみると、お決まりのidの次はusernameになっています。
どこかでuuidのカラムを削除しているのでしょうか?
・・・ありました。023_remove_uuid.rb が。何か理由があったのでしょうけど、経緯がわかるのはいいのですが、もうusersテーブル作成のところに含めてもいいように思えるのですが。
私もまだRuby歴が浅いので、Railsの文化を理解できていないので、何か理由があるのでしょうかね。
またauthlogicプラグインを使用しているようです。
使用している項目は名称からある程度予想がつくと思います。https://github.com/binarylogic/authlogic_example に authlogicプラグインの説明がありますので一応メモ。
次に少々目的から脱線しますが、usersテーブルに対応するモデルクラス /app/model/Userを少し見てみます。
class User < ActiveRecord::Base attr_protected :admin, :suspended_at
管理者区分のadminと、休止しているユーザの情報はattr_protectedの宣言(宣言的メソッドという方がいいのかも知れませんが)がなされています。
これは外のクラスから情報を変更されないようにという事なのでしょうか。
その他にも、Userクラスには勉強不足のため理解できないところが多いのですが、まずはデータ構造から見ていこうと思いますので、次回は openid_tablesと思いきや、これはあとで削除されています。ので次回はaccountsを。
0 件のコメント:
コメントを投稿