空文字への代入
空文字への代入
下記のようなコードがある場合、空文字('')へ代入する際の注意点
[app/models ファイル] def build_body(controller) result = '' article_blocks.each do |article_block| result << if article_block.sentence? sentence = article_block.blockable sentence.body # ① elsif article_block.medium? medium = ActiveDecorator::Decorator.instance.decorate(article_block.blockable) controller.render_to_string("shared/_media_#{medium.media_type}", locals: { medium: medium }, layout: false) elsif article_block.embed? embed = ActiveDecorator::Decorator.instance.decorate(article_block.blockable) controller.render_to_string("shared/_embed_#{embed.embed_type}", locals: { embed: embed }, layout: false) end end result end
上記の①の結果が[nil]になる場合、resultが空文字('')になっているのでresultに代入されない(イメージ図は、以下の通り)
①の部分を以下のように記述することで、[nil]の場合や[false]の場合に空文字をresultに代入するようにできる
sentence.body ||= ''
※ポイント
[nil]に対して[to_s]メソッドを使うと空文字が返ってくる
参考記事: