Rails:如何从嵌套模型中接收错误

时间:2013-06-20 19:31:45

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

我正在尝试验证从CSV电子邮件列表中提供的电子邮件。所以我创建了invite_list虚拟属性,当给出电子邮件列表时,它将循环并在invite_only_emails模型中创建一个新记录。

现在的问题是,这样可以正常工作,但是如何在用户模型中循环时捕获InvitedOnlyEmail抛出的验证错误,这样我就可以在控制器中使用该错误了?

这是我的主要模特:

class Users < ActiveRecord::Base
attr_accessor :invite_list
attr_accessible :invite_list

has_many :invited_only_emails

  def invite_list=(list)
    list.split(",").each do |address|
        self.invited_only_emails.create! :email => address
      end
  end

  def invite_list
    self.invited_only_emails.map {|email| email.email}.join(',')
  end
end

这是invite_only_emails模型:

class InvitedOnlyEmail < ActiveRecord::Base
  attr_accessible :email
  belongs_to :users

  validates_format_of :email, :with => /^([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})$/i

end

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为您可以使用validates_associated方法:

class User < ActiveRecord::Base
  validates_associated :invited_only_emails
  # ...
end

http://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_associated

答案 1 :(得分:0)