PlackとGroongaでblog作ってるときにつまづいたこと

groongaでboolなカラムをfalseに変更する場合falseとかnullとか0を渡せばいいのですが、なぜかtrueになるのでなんだろう、という話です。

結論

Plack::Request->parametersから受け取ったハッシュが以下のようになっている

$VAR1 = {          
    '_key' => 'ho',
    'name' => 'ge',         
    'display_fg' => '0'
};

0が数値ではなくて文字列の'0'になってました。こいつをJSON::decode_jsonにかけるとこーなるからそーなる、という話でした。

{"display_fg":"0","name":"ge","_key":"ho"}

ひとまずWeb::Controllerの中に次のような記述をしておいた

    if ( not $params{display_fg} ) { 
        $params{display_fg} = 0;
    }   

Plack::Requestがparametesのvalueを数値で返してくれたらうれしいのですが、1が数値か文字かを判断するのは開発者側の決める問題なんでしょうね。