Ruby on rails 验证这些关联中至少一个的存在
Ruby on rails 验证这些关联中至少一个的存在,ruby-on-rails,Ruby On Rails,取款账户记录包含sepa账户,国际账户,PayPalAccount或其他账户。应该至少是其中之一。不能超过一个 class WithdrawalAccount < ActiveRecord::Base has_one :sepa_account has_one :international_account has_one :third_account has_one :fourth_account end class取款帐户
取款账户
记录包含sepa账户
,国际账户
,PayPalAccount
或其他账户
。应该至少是其中之一。不能超过一个
class WithdrawalAccount < ActiveRecord::Base
has_one :sepa_account
has_one :international_account
has_one :third_account
has_one :fourth_account
end
class取款帐户
更新问题:
如何在只允许其中一个存在的情况下验证其中一个存在。尝试:
class WithdrawalAccount < ActiveRecord::Base
has_one :sepa_account
has_one :international_account
validates :sepa_account, presence: true, if: ->(instance) { instance.international_account.blank? }
validates :international_account, presence: true, if: ->(instance) { instance.sepa_account.blank? }
end
尝试:
你可以这样做
validate :account_validation
private
def account_validation
if !(sepa_account.blank? ^ international_account.blank?)
errors.add_to_base("Specify an Account")
end
end
这里有答案()你可以这样做
validate :account_validation
private
def account_validation
if !(sepa_account.blank? ^ international_account.blank?)
errors.add_to_base("Specify an Account")
end
end
这里有答案()谢谢,请查看更新的答案。在这种情况下,您将如何管理4个值,同时使其更易于阅读?谢谢,请参阅更新的答案。在这种情况下,您如何管理4个值,同时使其更易于阅读?谢谢。您如何确认只有一个可以在场?无论是
sepa\u账户
还是international\u账户
但只有一个?当有4个属性执行异或时,这似乎有一个缺陷。例如:nil^true^true^true
返回true
。如果有人同时推送3种类型的帐户,看起来XOR条件将把它们都考虑在内。这是一个很好的问题。我会仔细研究一下,看看能想出什么来谢谢。您如何确认只有一个可以在场?无论是sepa\u账户
还是international\u账户
但只有一个?当有4个属性执行异或时,这似乎有一个缺陷。例如:nil^true^true^true
返回true
。如果有人同时推送3种类型的帐户,看起来XOR条件将把它们都考虑在内。这是一个很好的问题。我要深入研究一下,看看能想出什么办法
validate :account_validation
private
def account_validation
if !(sepa_account.blank? ^ international_account.blank?)
errors.add_to_base("Specify an Account")
end
end