gpt4 book ai didi

ruby-on-rails - rails 中的验证在内部使用元编程?它实际上是如何工作的?

转载 作者:数据小太阳 更新时间:2023-10-29 07:37:16 25 4
gpt4 key购买 nike

我们已经在 rails 中看到我们对特定列执行类似这样的验证 -
验证:first_name,存在:true
这个声明实际上是做什么的?我认为它为我们的模型类创建了一个类方法,方法名称为“first_name”。一旦有人执行 object.first_name 并查找此参数的值,就会调用此方法,如果值为空则引发错误,否则返回 true。
我不确定我是否就在这里。如果有人可以解释整个周期,那就太好了。谢谢!

最佳答案

如果您的模型中有 validates :attribute, presence: true 行,它与存储在数据库中的属性相关,而不是自定义方法。

您的验证将在数据库中搜索模型表中的记录,并确保 first_name 属性不为 nil。

编辑:正如 mrzasa 在下面指出的那样,它实际上并没有在验证时检索记录的新实例,而是使用当前内存中的属性

如果是,它将向您的记录添加一个验证错误,您将无法保存它。

我强烈建议通读 https://guides.rubyonrails.org/active_record_validations.html#validations-overview如果你想知道验证是如何工作的。

关于ruby-on-rails - rails 中的验证在内部使用元编程?它实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58023927/

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