将validates_uniqueness_of错误添加到另一个属性

时间:2015-04-09 15:43:48

标签: ruby-on-rails ruby

我在类中有一个验证器,如下所示

validates_uniqueness_of :email, {message: 'this is not a unique email :('}

我希望将此错误添加到错误对象的自定义属性,例如

{errors: {already_invited: true}}

我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

你可以做这样的事情

validates_uniqueness_of :email, {message: 'this is not a unique email :('}
validate :previous_invite

def previous_invite
  #if already_invited is an attribute of the model then use
  # errors.add(:already_invited, "true") otherwise add it to base
  errors.add(:base, "already invited") if errors.added?(:email,'this is not a unique email :(') 
end

你不应该只是向errors添加任意键,但如果您真的喜欢它,那么根据文档,它只是被认为是糟糕的形式:

  如果错误与单个属性没有直接关联,

属性应设置为:base。

此外,邮件将被视为字符串而不是布尔值。所以它不是already_invited: true而是already_invited: "true"