空の値をつかった条件分岐

指定したカラムの値が空のときは......、のような条件づけをするときの""(ダブルクォートのみ)とnilについて。

if column_name == ""

  ...

end

if colimn_name == nil

  ...

end

の違い。

 

insertするとき、カラムは指定して値にシングルクォートのみを入れたときは""でカラムを指定せず何も入力しなかったらnil

条件をつけたとき、前者は

['column_name'] == "" が trueで ['column_name'] == nil だと false。

後者は

['column_name'] == nil が trueで ['column_name'] == ""だとfalse になる。

 

create table addresses (

name  text,

address1 text,

address2 text

);

 

insert into addresses (name,address1) values

('Taro Yamada' , '1-2-3 ooo-cho');

ならaddress2はnilがtrue。

 

insert into addresses (name,address1,address2) values

('Ichiro Suzuki' , '4-5-6 ooo-cho' , ' ');

ならaddress2は""がtrue。

 

ruby 2.3.1

postgeSQL 9.6