使用对象数组验证非数据库模型

时间:2012-01-10 19:57:35

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

所以这是我的非数据库模型。

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}。

我以前从未做过这种类型的验证,所以任何帮助都会受到赞赏!

1 个答案:

答案 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