我有一个名为Donation
的模型,即belongs_to User
。
还有一个RemoteAccount
模型,方法:donation_amounts
,它返回一个可以接受的数字数组(例如[10, 25, 50, 100, 250, 500]
)
对于每个RemoteAccount
,此数组都不同。
我需要确保提交给该用户的捐款在他的帐户可以接受的价值范围内。
这可能吗?
逻辑是这样的:
validates :amount, inclusion: { in: self.user.remote_account.donation_amounts }
(显然它不起作用,但你明白了)
答案 0 :(得分:0)
您是否尝试过Custom Validator之类的内容?我认为这正是你所需要的。
class MyValidator < ActiveModel::Validator
def validate(record)
unless record.name.starts_with? 'X'
record.errors[:name] << 'Need a name starting with X please!'
end
end
end
class Person
include ActiveModel::Validations
validates_with MyValidator
end
答案 1 :(得分:0)
您可以在模型类中创建自定义验证器,如下所示:
validate :check_values
def check_values
# Here you do the custom check returning true or false
end
此处提供更多信息:http://edgeguides.rubyonrails.org/active_record_validations.html#custom-validators
答案 2 :(得分:0)
您可以使用proc来执行此操作。
validates :amount, inclusion: { in: proc { |record| record.user.remote_account.donation_amounts } }