Comment モデルのカスタマイズ
===========================

`Comment` モデルでは、主に `rules()` メソッドと `attributeLabels()` メソッドをカスタマイズします。`attributeLabels()` メソッドは属性の名前と属性のラベルの対応表を返します。`relations()` は `Gii` ツールで生成したコードで十分なので手を入れる必要はありません。

`rules()` メソッドのカスタマイズ
-------------------------------

最初に、`Gii` ツールで生成した検証ルールをカスタマイズします。コメント用のルールは以下の通りです。

~~~
[php]
public function rules()
{
	return array(
		array('content, author, email', 'required'),
		array('author, email, url', 'length', 'max'=>128),
		array('email','email'),
		array('url','url'),
	);
}
~~~

上記の指定内容は次のような意味です。`author`, `email`, `content` 属性は必須、`author`, `email`, `url` は最大128字、`email` 属性は有効なメールアドレスであること、`url` 属性は有効な URL であること。

`attributeLabels()` メソッドのカスタマイズ
-----------------------------------------

次に `attributeLabels()` メソッドをカスタマイズして、モデルの各属性を表示する際のラベルを宣言します。このメソッドは、名前-ラベルの組で構成される配列を返します。[CHtml::activeLabel()] を呼ぶと属性のラベルを表示できます。

~~~
[php]
public function attributeLabels()
{
	return array(
		'id' => 'ID',
		'content' => 'コメント',
		'status' => '状態',
		'create_time' => '作成日時',
		'author' => '名前',
		'email' => 'メール',
		'url' => 'ウェブサイト',
		'post_id' => '記事',
	);
}
~~~

> Tip|ヒント: `attributeLabels()` で属性のラベルを宣言していない場合、アルゴリズムに従って適切なラベルが生成されます。例えば、`create_time` や `createTime` という属性には、`Create Time` というラベルが生成されます。

保存プロセスのカスタマイズ
--------------------------

コメントの作成時刻を記録したいので、`Post` モデルと同様に、`Comment` の `beforeSave()` メソッドをオーバーライドします。

~~~
[php]
protected function beforeSave()
{
	if(parent::beforeSave())
	{
		if($this->isNewRecord)
			$this->create_time=time();
		return true;
	}
	else
		return false;
}
~~~


<div class="revision">$Id$</div>