我的模型有问题。我有一个通过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上出错,反之亦然。
我希望这很清楚。任何帮助表示赞赏。 感谢。
答案 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。