将参数传递给Validation - Rails 3

时间:2017-09-11 07:12:50

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

我们目前通过以下代码有效的不同部分:

on_boarding_form.rb

  def valid?
    @sections.all? {|section| section.valid?}
  end

这是 on_boarding_section_form.rb 。 我们在哪里做一些检查

  validate do
    @fields.where(:required => true).where(:hidden => false).each do |req_field|

      if req_field.name.to_s == 'FAVOR'
        binding.remote_pry
      end

      if defined? land1
        if land1 == 'BE' && req_field.name.to_s == 'ORT01'
          # do nothing
        elsif land1 == 'BE' && req_field.name.to_s == 'ENTK2'
          # do nothing
        elsif land1 == 'BE' && req_field.name.to_s == 'PSTLZ'
          #validate postal code
          @errors.add_on_blank(req_field.name.downcase.to_sym)
        elsif land1  != 'BE' && req_field.name.to_s == 'ORT01'
          @errors.add_on_blank(req_field.name.downcase.to_sym)
        elsif land1  != 'BE' && req_field.name.to_s == 'ENTK2'
          @errors.add_on_blank(req_field.name.downcase.to_sym)
        elsif land1  != 'BE' && req_field.name.to_s == 'PSTLZ'
          # do nothing
        else
          @errors.add_on_blank(req_field.name.downcase.to_sym)
        end
      else
        @errors.add_on_blank(req_field.name.downcase.to_sym)
      end
    end
    @fields.where(:hidden => false).each do |field|
      next if field.field_type =~ /g/i
      next if field.field_type =~ /d/i
      next if field.field_type =~ /p/i
      validates_with LengthValidator, :attributes => field.name.downcase.to_sym, :in => 0..field.field_length
    end
  end

在紧急联系方面,我们需要检查此人是否已婚。如果该人已婚,则应该要求紧急联系领域。

现在我的问题在于on_boarding_form.rb可以将参数传递给on_boarding_section_form.rb,这样我就可以传递婚姻状况。

谢谢!

亲切的问候, 文森特

0 个答案:

没有答案