Hatena::ブログ(Diary)

bobchinの日記 このページをアンテナに追加 RSSフィード

2008年05月13日(火)

[][]メモを見つけたので貼っておく 19:00 メモを見つけたので貼っておくを含むブックマーク

migration

*XXX => カラム名は多言語対応となる
description|content|body => text
id => id integer not null auto_increment primary_key
XXX_id|XXX_by => integer index
position => integer index
XXX_at => datetime
XXX_on => date
is_XXX|has_XXX|do_XXX|does_XXX|are_XXX => boolean not null default '0' index
XXX (YYY) => XXX string(YYY)
XXX stringYYY => XXX string(255)

後ろに使えそうな単語
limit XXX
max XXX
length XXX
default XXX
integer|int
float
datetime
date
timestamp
time
text
string
binary
boolean
NOT NULL
AUTO INCREMENT
INDEX
UNUQUE
HASH
FULLTEXT
PRIMARY KEY|pk

booleanは使わない方がいい

model

*モデル

**属性
-table_name:テーブル名。指定しない場合はモデルのクラス名からアンダースコア区切りを大文字に変え複数形にしたもの。
-acts_as
 act_as :カンマ区切り指定|配列指定。キーは(例)List|NestedSet|Tree)値はオプション。
--オプションについて
オプションは各オブジェクトのinitメソッドを見るとよい。
--List
モデルをリスト(配列)として扱うことができるようになる。属性listとしてアクセスする。
--NestedSet
モデルを階層化セットとして扱うことができるようになる。
--Tree
モデルをツリーとして扱うことができるようになる。属性treeとしてアクセスする。

-combined_attributes:複数のカラムで1つのカラムを形成する:|配列で指定
var $combined_attributes = array(
    array('name', array("%s, %s","%[^,], %s"), 'last_name', 'first_name'),                // 1:新しいカラム名 2:フォーマット(セットするときとゲットするとき) 3以降:引数となるカラム
    array('email_link', array("compose_email_link","parse_email_link"), 'email', 'name'), // 
);

-_accessibleAttributes|_protectedAttributes:値の管理を直接引数指定でやる場合にカラムを指定する

-(hasOne|has_one)|(belongsTo|belongs_to)|(hasMany|has_many)|(hasAndBelongsToMany|habtm|has_and_belongs_to_many)
例)
$var $has_many = array(
    '関連モデル名' => options
);

各オプションはaddAssociated('関連モデル名(属性名にもなる)', 'オプション')を見よ!

--オプション
 hasOne
  class_name(関連名のキャメライズしたもの)
  table_name(class_nameをテーブル名化したもの)
  foreign_key(親モデルテーブル名の単数形_id)
  instantiate: 親モデルのロード時にインスタンス化するかどうか(true|false)
  conditions:関連を取得するときの条件を指定
  order:関連を取得するときの順序を指定
  include_conditions_when_included
  include_order_when_included
  dependent:親モデル削除時に同時に削除するかどうか(true|false)
  counter_cache:使用していない?
  remote:使用していない?

 hasMany
  class_name(関連名の単数形をキャメライズしたもの)
  conditions:関連を取得するときの条件を指定
  order:関連を取得するときの順序を指定
  group:関連を取得するときのGROUPBYを指定する
  limit:関連を取得するときの件数を指定する
  offset:関連を取得するときの最初の位置を指定する
  finder_sql:関連を取得するときの完全なSQLを指定する
  counter_sql:関連の件数を取得するときの完全なSQLを指定する
  include_conditions_when_included
  include_order_when_included
  foreign_key(親モデルテーブル名の単数形_id)
  dependent(nullify):親モデル削除時に同時に削除するかどうか(destroy|delete_all|nullify)
  include:さらに関連を取得する?
  instantiate: 親モデルのロード時にインスタンス化するかどうか(true|false)
  handler_name(関連名の単数形をアンダースコア化したもの):関連を扱う属性名を指定
  select:使用していない?

 belongsTo
 habtm
 
**定数
-AK_ACTIVE_RECORD_VALIDATE_TABLE_NAMES:モデルインスタンス生成時にテーブル名の存在確認をするかどうか


**オブザーバ
モデルの外に機能を提供できる。基本はコールバックで以下のタイミングでコールできる。
-beforeCreate
-afterCreate
-beforeSave
-afterSave
-beforeUpdate
-afterUpdate
-beforeDestroy
-afterDestroy
-beforeValidation
-afterValidation
-beforeValidationOnCreate
-afterValidationOnCreate
-beforeValidationOnUpdate
-afterValidationOnUpdate

オブザーバ側は、上記のメソッドが存在すればそのメソッドが、それ以外はupdateメソッドがコールされる。
引数は、
上記メソッドの場合は、
--第1引数:モデルオブジェクト
それ以外は
--第1引数:コールされた上記のメソッド名
--第2引数:モデルオブジェクト
トラックバック - http://d.hatena.ne.jp/bobchin/20080513/1210672828