フィールドを空の文字列にすることはできますが、null にすることはできません。
このstackeroverflowの投稿をちょっとした助けに使いました
しかし、私を助けるためにこれ以上見つけることができません。
私の schema.rb ファイルには次のように表示されます。
t.string "CUSTID", :limit => 8, :default => "", :null => false
これに対して rspec テストを実行すると、validate で null を許可します。私のテスト (下記) が失敗する理由を説明していただけますか?
it 'CUSTID may not be nil' do
should_not allow_value(nil).for(:CUSTID)
end
次に、これらの検証メソッドをモデルで個別に試しました。
validates :TNCUSTID, :allow_nil => false
validates :TNCUSTID, :format => {:with => /^(CU)(\d{6})$|(^$)/ }
検証を完全に省略しても
#validates :TNCUSTID, :allow_nil => false
すべてのケースで、「nil であってはならない」テスト ケースが custid で失敗します
私の最終的な目標は、値がこの形式 (上記の正規表現) のいずれかである可能性があり、空の文字列である可能性がありますが、データベースによると、null になることはありません。
誰か教えてください