所以这是我的非数据库模型。
class UserApplication::CoApplicant
include ActiveModel::Validations
include ActiveModel::Conversion
attr_accessor :applicant, :first_name, :last_name, :email
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}", value)
end
end
def persisted?
false
end
end
我希望传递一个对象数组,看起来像这样。
"applicant"=>{"0"=>{"email"=>"blank@gmail.com", "last_name"=>"Jackson", "first_name"=>"Shaun"}, "1"=>{"email"=>"blank2@gmail.com", "last_name"=>"Davis", "first_name"=>"Dave"}}
我遇到的问题是想出一种验证每个对象的方法。这些值是
来自动态生成的表,范围可以是1到10行。
“0”和“1” - 表示表格行。我希望验证每一套
属性{email,first_name,last_name}。
我以前从未做过这种类型的验证,所以任何帮助都会受到赞赏!
答案 0 :(得分:2)
看起来您只需要实例化每个实例然后验证它们。这应该就像根据源数组创建它们一样简单:
applicant_data = applicants['applicant']
applicant_data.each do |id, attributes|
applicant = applicant.new(attributes)
applicant.valid?
end
在您的作业中,如果您使用的是"#{name}"
方法,而不是#{name}=
方法,则也会出错:
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end