Rails批量对象的创建和验证

时间:2015-11-19 10:37:11

标签: ruby-on-rails ruby

我在Ruby on Rails 4上有应用程序。我有控制器从客户端接收数据并创建批量对象。因此,如果来自这些对象的数据是正确的,并且不应创建其他(无效)对象并将其返回给客户端以进行进一步修复,则可以创建和存储一些对象。

我的模型类(包含名称和日期):

class Person < ActiveRecord::Base
   validates :name, presence: true
   validates :date, presence: true
end

我的控制器:

PersonsController
    def create_multiple
        valid_persons = []
        invalid_persons = []
        all_persons_params = get_all_persons_params #just extract it from params
        all_persons_params.each.do |one_person_params|
            person = Person.new one_person_params
            if person.valid?
                valid_persons << person
            else
               invalid_persons << person
            end
        end
        process_valid_persons #store them
        process_invalid_persons invalid_persons #redirect to persons modifications page to make user to fix errors (if !invalid_persons.empty?)
    end
    def process_invalid_persons (invalid_persons)
        flash[:invalid_persons] = invalid_persons
        redirect_to ...
    end
end

最后,我尝试在我的视图中显示错误:

<%
    @invalid_persons.each do |invalid_person|
        invalid_person.errors
    end
%>

我在#Hash中的未定义的方法`错误'的第invalid_person.errors行收到错误:0x007f99d0ca2788

所以如果它的参数无效并且ruby返回哈希映射而不是对象,那么它就无法创建对象。那么有没有办法在无效的params案例中创建对象?并获得验证错误以向用户显示它们?

THX

0 个答案:

没有答案