首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:在验证过程中(除了例外),抓狂是否不恰当?

Rails:在验证过程中(除了例外),抓狂是否不恰当?
EN

Stack Overflow用户
提问于 2011-01-18 07:24:31
回答 3查看 286关注 0票数 2

你有一个Lung模型。在里面,你说:

validates_presence_of :human_id

应用程序的用户无法控制是否设置了human_id;应用程序应该是自动的。

如果:human_id从来没有出现过,它不会帮助您的用户告诉他们“这个肺不依附于人类”,因为您的用户将无法对它做任何事情。是时候让你的模型抓狂并抛出一个异常了吗?

您的模型应该关心给定验证错误的严重程度吗?这是业务逻辑的一部分吗?模型应该在验证期间抛出异常,还是应该由控制器负责从模型中解释“哑”验证并为视图生成有用的数据?

编辑:如果这是一件可以接受的事情,那么在模型验证期间如何抛出异常有什么约定吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-18 14:50:04

我将设置我的ActiveRecord迁移,以便human_id列不能是null。这样你就会得到一个例外,无论如何,如果没有设置。

代码语言:javascript
复制
create_table :lungs do |t|
  t.integer :human_id, :null => false
  ...
end
票数 2
EN

Stack Overflow用户

发布于 2011-01-18 10:01:08

我认为应该作为例外情况提出来。应用程序将在大多数情况下使用human_id,并且只有在特殊情况下才可能不存在human_id,例如精心编制的请求或后端的定时注销。由于这些是例外情况,所以值得抛出异常,而不是让控制器来处理它。

票数 2
EN

Stack Overflow用户

发布于 2011-01-18 10:14:50

在我看来,验证并不是检查这种模型一致性的合适地方。验证只适用于用户生成的输入。

问题是:在没有人类身份的情况下,肺怎么可能产生呢?如果答案只是通过编程顺序,那么您应该修复这个错误,并为它创建一些测试用例。或者,如果您真的想每次检查它,可以在before_save回调中检查它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4721464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档