2011-06-29 2 views
0

私はDBテーブルのデータに格納しています。列には、値NULLと文字列を指定できます。Ruby - 変数がNULLではなく、文字列を含んでいます

if @optional.logo.size > 3 && [email protected]? 
    ...In table is a STRING... 
else 
    ...In table is NULL... 
end 

: - 文字列であるとき、私は条件を見つけることができない、>印刷この文字列は、ときNULL、何かを行う...

私はこのような何かをしようとしていますですしかしこれは間違っています...誰も私を助けてくれますか、どうしたらいいですか? ありがとう

+0

Rails ActiveRecordですか? –

+0

@optionalがnilであっても、これは失敗する可能性があります。 – mikeycgto

答えて

3

nilオブジェクトにはsizeプロパティがないため、最初にnilをテストする必要があります。

2

スイッチ、それを周りとは、最初のnilチェックを行います。

if [email protected]? && @optional.logo.size > 3 

&&オペレータが「短絡」と呼ばれるものです。つまり、最初の引数がfalseに評価された場合、2番目の引数は評価されません。これは問題ではないためです。言い換えると、最初の引数がfalseの場合、引数部分に関係なく、式全体がfalseになります。 ||演算子も同様に動作しますが、第1引数がtrueの場合は第2引数を評価しません。これは、第2引数の値にかかわらず式全体を真にするためです。

nilを確認することにより、nilにはsizeメソッドが含まれないという問題が回避されます。これは、式の部分が評価されないためです。

関連する問題