gpt4 book ai didi

ruby-on-rails - 关于 "Dynamic"模型验证的建议

转载 作者:行者123 更新时间:2023-12-04 16:01:46 25 4
gpt4 key购买 nike

我有一个名为 Calendar 的模型.

将应用于它的验证因用户所做的选择而异。

我知道我可以使用自定义验证 + 条件验证来做到这一点,但对我来说看起来不太干净。

我想知道是否可以将它存储在数据库列中并将其传递给“通用”验证器方法。

你怎么认为?

进一步解释:

用户有一个日历。
有权访问此日历的其他用户可以安排约会。

要安排约会,应用程序应根据日历所有者定义的规则进行验证。

有很多组合,所以我想到的是:

为每个可能的验证创建自定义验证器类,并使其成为条件。

class Calendar
validate_allowed_in_hollydays :appointment_date if :allowedinhollydays?
(tenths of other cases)
...
end

这有效,但感觉不对。

我正在考虑将规则应用于该日历的某个地方存储,然后执行以下操作:
validate_stored_rules :appointment_date

最佳答案

将数据保存在数据库中然后对其进行验证似乎有点倒退。

我认为您最初考虑进行一些自定义验证是最好的选择。 validates_with 看起来是你最好的选择。然后,您可以创建一个单独的类并在其中构建所有验证,以使其与主模型分开。

class Person < ActiveRecord::Base
validates_with GoodnessValidator
end

class GoodnessValidator < ActiveModel::Validator
def validate
if record.first_name == "Evil"
record.errors[:base] << "This person is evil"
end
end
end

代码直接来自 Rails Validation Guide

关于ruby-on-rails - 关于 "Dynamic"模型验证的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5640964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com