2011年2月2日水曜日

オープンソース CRM(Fat Free CRM) データを見てみる2

前回に続き、マイグレーションの順で見ていきましょう。

今回は 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 件のコメント:

コメントを投稿