12

我有一个模型,我想将字段的输入限制为 nil 或落在指定的值数组内。我可以让包含部分工作,但该allow_nil: true位似乎对我不起作用:

class Mock::Patient < ActiveRecord::Base
  LANGUAGE_OPTIONS = %w[English Spanish French German Chinese Hindi Punjabi]
  validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS }
end

我尝试将最后一行修改为:

  validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS }, allow_nil: true

但无济于事。表达简单包含或 nil 组合的最简单方法是什么?

4

2 回答 2

12

允许 nil 验证同时仍然允许有限的值数组的正确形式如下:

validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS, allow_nil: true }

注意 allow_nil 选项是如何包含选项哈希中的

于 2013-02-15T17:03:29.273 回答
0

我通过使验证行看起来像这样解决了这个问题:

validates :preferred_language, inclusion: { in: LANGUAGE_OPTIONS + [nil] }

这样,我允许 nil,但我不会更改我在视图中用于提供选择选项集合的常量。从那以后,我还在数组前面添加了一个元素 '',因此我不必在表单输入帮助程序中明确包含空白。

于 2012-11-27T18:16:38.193 回答