めもめも のーと

ハマったこととか、覚えたこととか

Ruby on Railsのboolean型のカラムを1 / 0で更新すると、true / falseになる件

注意:実行結果を書いただけで詳しく調査していないので、参考程度で。。


railsでboolean型のカラムに対して、1 / 0 でパラメータを渡して更新したら、true / false になって登録されました。 これって、こういうものなのでしょうか。。

環境
Ruby  1.9.3p448
Rails 2.3.18
DB    PostgreSQL9.3.2
確認した手順

productsテーブルにcdというboolean型のカラムを追加しました。

\d products;
                                    テーブル "public.products"
     列     |             型              |                        修飾語                         
------------+-----------------------------+-------------------------------------------------------
 id         | integer                     | not null default nextval('products_id_seq'::regclass)
 name       | character varying(255)      | 
 price      | integer                     | 
 created_at | timestamp without time zone | 
 updated_at | timestamp without time zone | 
 cd         | boolean                     | 
インデックス:
    "products_pkey" PRIMARY KEY, btree (id)

コンソールで確認。

$ ruby script/console 

>> product = Product.new
=> #<Product id: nil, name: nil, price: nil, created_at: nil, updated_at: nil, cd: nil>
>> product.attributes = {:cd => "1"}
=> {:cd=>"1"}
>> product.cd
=> true

↑「1」を渡すと、trueになりました。

>> product.attributes = {:cd => "0"}
=> {:cd=>"0"}
>> product.cd
=> false

↑「0」を渡すと、falseになりました。

他にも2とか9とか、aaaなどをパラメータで渡してみましたが、falseが返ってきました。1のときだけtrueになるようです。

これは、rubyだからとかではなく、プログラム的にそういうものなのでしょうか。。 継続して調査したいと思います。 取り急ぎ、忘れないためにメモ。