验证1个模型的单独表格的参数

时间:2017-01-29 12:11:15

标签: ruby-on-rails forms validation

我的模型有问题。我有一个通过2个表格更新的模型(因为2个人需要输入单独的数据)。表单1包含所需数据的前半部分,因此只需要在那里验证数据。

我无法找到仅验证表单1中输入的数据的方法。您可以在下面找到我的subscription.rb模型文件。

class Subscription < ActiveRecord::Base
  # werkgever form

  if form_id == 'form1'
    validates :email, presence: true
  end

  # werknemer form
  if form_id == 'form2'
    validates :name, presence: true
    validates :city presence: true
  end
end

我需要if语句包含一些内容,使得只有那些表格中的值才会被验证,这样我在更新时就不会在form2上出错,反之亦然。

我希望这很清楚。任何帮助表示赞赏。 感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用条件设置验证:

attr_accessor :form_type    

validates :email, presence: true, :if => :werkgever_form?

def werkgever_form?
  form_type == 'werkgever'
end

:form_type是一个虚拟属性,它不保存在数据库中,仅用于验证。您可以将此属性设置为每种形式的隐藏字段:

<%= form.hidden_field :form_type, 'werkgever' %>

答案 1 :(得分:1)

attr_accessor :form_type
validates :email, presence: true, if: :check_if_form_one
validates :name, presence: true, unless: :check_if_form_one
validates :city presence: true, unless: :check_if_form_one

def check_if_form_one
  /* Add your condition here
    example: form_type == 'form1' */
end

您可以从控制器方法或视图页面设置form_type。