Techioz Blog

Rails: 列が nil 値を許可するかどうかをテストする

概要

Rails へのこの回答: データベースで空の文字列を NULL に強制する は、ミックスインを使用して空の文字列の列値を nil に設定することを提案しています。

列が nil/null 値を受け入れるかどうかをテストする方法はありますか?

> f = Foobar.find(1)
=> #<Entity id: 7, name: "foo", description: nil, has_bar: false, created_at: "2014-08-04 21:50:42", updated_at: "2014-08-05 19:35:33">

> f.has_bar.allow_nil?
NoMethodError: undefined method `allow_nil?' for nil:NilClass

description フィールドが空白文字列ではなく nil であることを確認したいのですが、has_bar が true または false であることを確認します。

他の質問からの抜粋:

attributes.each do |column, value|
  # invalid syntax
  ( self[column].present? && self[column].allow_nil? ) || self[column] = nil
end

解決策

f.description.nil? && (f.has_bar == true || f.has_bar == false)