Ruby on rails Rails 2.3.5:如果没有';把它放在验证中没有意义吗? 我最近试图在一些模型逻辑的中间添加Error。AddioToBaseCal码,并想知道为什么在我的视图中没有重复遍历所有的错误。然后,我偶然看到了这封电子邮件,这封电子邮件解释了为什么:

Ruby on rails Rails 2.3.5:如果没有';把它放在验证中没有意义吗? 我最近试图在一些模型逻辑的中间添加Error。AddioToBaseCal码,并想知道为什么在我的视图中没有重复遍历所有的错误。然后,我偶然看到了这封电子邮件,这封电子邮件解释了为什么:,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,问题是,如果将错误添加到validate方法中没有意义,如何使用add_-to_-base添加错误?我有一些复杂的逻辑。该模型需要与一个has_-many关系进行对话,该关系有自己的关系,该关系通过无数的条件来判断请求是否有意义。没有什么可以轻松地绑定到验证方法 我可以做的一件事是创建一个实例变量,并在迭代复杂逻辑时将所有错误作为字符串推送到它。之后,我可以对数组运行validate,并将这些错误推送到基本对象。看起来有点蹩脚,但不是Rails的做事方式 Rails社区的底线是复杂逻辑,即使逻辑

问题是,如果将错误添加到validate方法中没有意义,如何使用add_-to_-base添加错误?我有一些复杂的逻辑。该模型需要与一个has_-many关系进行对话,该关系有自己的关系,该关系通过无数的条件来判断请求是否有意义。没有什么可以轻松地绑定到验证方法

我可以做的一件事是创建一个实例变量,并在迭代复杂逻辑时将所有错误作为字符串推送到它。之后,我可以对数组运行validate,并将这些错误推送到基本对象。看起来有点蹩脚,但不是Rails的做事方式


Rails社区的底线是复杂逻辑,即使逻辑跨越多个模型,也必须在一个特定的模型验证方法中?当验证非常复杂并且可以跨越多个模型时,它是如何处理的?

我不明白为什么将它放入验证中没有意义。为了确保这一点,您要做的应该是在一个模型中,所以您必须将它放在模型中的某个方法中。然后再加上:

validate :my_method
就这些。当然,如果
my_方法
变得太复杂,那么将其拆分为一些逻辑子方法

如果您有许多相关对象,那么您应该将属于该对象的所有验证放在该对象模型中,并且当您尝试保存“父”对象时,“子”对象也将通过其验证进行验证