No タイトル ステータス 重要度 担当 完了予定日 更新日時 記事数
92 [バグ]integer型カラムのrequireが無視される 完了 tokushima 2008-06-25 18:05 2008-07-27 01:09 5
必須項目のinteger型のカラムに何も入力していなくても
verifyに通ってしまいます.

また,適当な文字列を入力すると0にキャストされてしまいます.
TableObjectUtil::castあたりが原因だと思います.


空文字含む数字以外の文字の場合の挙動をどうするべきかを検討する必要がありますね
どうしましょ?

function testRequireInteger(){
$num = new NumOnly(100);
$this->assertFalse($this->db->insert($num),"none");
$this->db->delete(new NumOnly(100));

$num = new NumOnly(100);
$num->setNum(null);
$this->assertFalse($this->db->insert($num),"null");
$this->db->delete(new NumOnly(100));

$num = new NumOnly(100);
$num->setNum("");
$this->assertFalse($this->db->insert($num),"''");
$this->db->delete(new NumOnly(100));

$num = new NumOnly(100);
$num->setNum("hoge");
$this->assertFalse($this->db->insert($num),"hoge");
$this->db->delete(new NumOnly(100));

$num = new NumOnly(100);
$num->num = "";
$this->assertFalse($this->db->insert($num),"direct ''");
$this->db->delete(new NumOnly(100));

$num = new NumOnly(100);
$num->num = "hoge";
$this->assertFalse($this->db->insert($num),"direct hoge");
$this->db->delete(new NumOnly(100));
}



''とhogeがverifyにひっかからない。(directはひっかかる)
setterを利用した場合にcastされてるので、値が0になっています。

verifyの挙動というよりはsetterの挙動が問題のようですね。
setterの挙動として、どうあるべきだと思いますか?

検討していかないといけない
revision 3311.