嵌套模型验证上下文

时间:2011-08-13 19:13:42

标签: ruby-on-rails ruby ruby-on-rails-3 validation

我正在使用Ruby on Rails 3.0.9,我正在尝试在特定上下文中验证嵌套模型,仅用于电子邮件属性唯一性

在我的控制器中我有:

@user.valid? :uniqueness_context

在我的嵌套模型中,我有:

validates :email,
  :format     => {
    :with     => EMAIL_REGEX
  },
  :uniqueness => {
    :on => :uniqueness_context # Here it doesn't work
  },
  :presence   => true

有什么问题?如何使上述验证码有效?


注意:如果在模型中我使用以下内容:

validates :email,
  :format     => {
    :with     => EMAIL_REGEX
  },
  :uniqueness => true,
  :presence   => true

一切按预期工作。


为了解决这个问题,我还尝试在模型中使用以下内容:

validates :email,
  :format     => {
    :with     => EMAIL_REGEX
  },
  :presence   => true

validates_uniqueness_of :email, :on => :uniqueness_context

但它仍然不起作用。

2 个答案:

答案 0 :(得分:0)

抱歉,我把它间隔了一分钟,因为我没有意识到你可以创建自定义上下文。

查看源代码,看起来UniquenessValidator似乎不支持:on上下文选项。

https://github.com/rails/rails/blob/master/activerecord/lib/active_record/validations/uniqueness.rb

答案 1 :(得分:0)

我遇到了同样的problem。似乎Rails目前不支持自定义验证上下文。 :if将为您完成这项工作。