0

我正在尝试在 Rails 3.2.8 中设置我的模型,以便必须存在特定值,但允许为空字符串。有谁知道如何做到这一点?

我正在寻找的行为看起来像:

@foo.value = "this is a real value"
@foo.valid? # => true

@foo.value = nil
@foo.valid? # => false

@foo.value = ""
@foo.valid? # => true

如果我使用

validates :foo, :presence => true

然后我得到了我想要的 1 和 2,但不是 3。而且,有用的是,在验证存在时:allow_blank => true忽略。

我也试过

validates :foo, :length => { :minimum => 0 }, :allow_nil => false

相同的行为:得到我想要的 1 和 2,但不是 3。

我想我可以将列标记为NOT NULL数据库中的列,但是我必须处理捕获异常;我真的宁愿在验证阶段抓住这个。

有任何想法吗?

4

1 回答 1

1

我会尝试这样的事情:

validates :foo, presence: true, unless: lambda { |f| f.foo === "" }
于 2012-10-23T23:11:25.787 回答