我们说我有一个模型Foobar
。
Foobar可以具有如下属性:
create_table "foobars" do |t|
t.integer "a"
t.integer "b"
t.integer "c"
end
在创建新foobars的表单中,用户可以为 a,b或c 添加数字。但是,如果他们输入任何这些属性的数字,那么所有其他属性也必须输入。换句话说,如果定义了a
,我需要检查b
和c
是否也已定义。
答案 0 :(得分:0)
您可以在验证方法中评估以下语句:
(a && b && c) || (!a && !b && !c)
只有当所有这些都存在或者所有这些都是零时才评估为真。
答案 1 :(得分:0)
更新: 我建议conditional validation。你可以这样做:
class Foobar < ActiveRecord::Base
validates :a, presence: true, if: :interdependent_attributes_present?
validates :b, presence: true, if: :interdependent_attributes_present?
validates :c, presence: true, if: :interdependent_attributes_present?
def interdependent_attributes_present?
a.present? || b.present || c.present?
end
end