嵌套属性中的Rails/Mongoid错误消息

Ric*_*ard 14 validation nested propagation mongoid

我有一个定义如下的联系信息类:

class ContactInfo
  include Mongoid::Document

  validates_presence_of :name, :message => ' cannot be blank'

  field :name, :type => String
  field :address, :type => String
  field :city, :type => String
  field :state, :type => String
  field :zip, :type => String
  field :country, :type => String
  embedded_in :user
end
Run Code Online (Sandbox Code Playgroud)

此联系信息类嵌入在我的用户类中的嵌套属性:

class PortalUser
  include Mongoid::Document
  accepts_nested_attributes_for :contact_info
end
Run Code Online (Sandbox Code Playgroud)

当我尝试保存没有名称的用户时,我收到如下错误消息:

联系信息无效

但是,这对最终用户来说不是很有用,因为他或她不知道哪些联系信息无效.REAL消息应为"名称不能为空".但是,此错误不会向上传播.有没有办法让user.errors中的'Name not not blank'消息而不是'Contact info is invalid'错误消息?

谢谢

Ric*_*ard 13

这是我最终提出的解决方案:

将这些行添加到用户类

after_validation :handle_post_validation
def handle_post_validation
  if not self.errors[:contact_info].nil?
    self.contact_info.errors.each{ |attr,msg| self.errors.add(attr, msg)}
    self.errors.delete(:contact_info)
  end
end
Run Code Online (Sandbox Code Playgroud)