我正在尝试验证从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
谢谢!
答案 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)