【问题标题】:Rails, shoulda and rspec, Column Not NullRails, shoulda 和 rspec, Column Not Null
【发布时间】:2013-05-06 11:06:26
【问题描述】:

对于字段可以为空字符串但不能为空的位置,我无法通过测试。

我用这个stackeroverflow post 来获得一点帮助

但是找不到更多可以帮助我的东西。

在我的 schema.rb 文件中我看到:

t.string   "CUSTID",        :limit => 8,     :default => "",     :null => false

当我对此运行 rspec 测试时,我的验证仍然允许它为空。您能否解释一下为什么我的测试(如下)会失败?

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

在所有情况下,我的“不应该为零”测试用例都失败了 custid


我的最终目标是说值可以是这种格式(上面的正则表达式),可以是空字符串,但根据数据库永远不能为空。

有人能告诉我吗

【问题讨论】:

    标签: ruby-on-rails shoulda


    【解决方案1】:

    使用验证

    validates :TNCUSTID, presence: true
    validates :TNCUSTID, :format => {:with => /^(CU)(\d{6})$|(^$)/ }
    

    在你的测试中

    should validate_presence_of :TNCUSTID
    

    对于电子邮件

    should validate_format_of(:email).not_with('test@test').with_message(/invalid/)
    

    来自this StackOverflow question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 2013-11-02
      • 2015-11-04
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      相关资源
      最近更新 更多