gpt4 book ai didi

ruby-on-rails - 如果模式已经是限制性的,这些模型验证是否过大?

转载 作者:行者123 更新时间:2023-12-04 05:54:10 26 4
gpt4 key购买 nike

我有一个限制性模式(即模式已经有空限制和最大长度等)。将所有这些都放入模型中是否也会矫枉过正并适得其反?...

  validates :CouponID,      :presence => true,
:numericality => true

validates :MerchantName, :presence => true,
:length => { :maximum => 100 }

validates :MerchantID, :presence => true,
:numericality => true

validates :Network, :length => { :maximum => 20 }

validates :Label, :presence => true

validates :CouponCode, :length => { :maximum => 100 }

validates :EndDate, :presence => true

validates :Link, :presence => true

validates :Status, :presence => true,
:length => { :maximum => 45 }

validates :Country, :length => { :maximum => 100 }

最佳答案

不,这不是矫枉过正。将这些放入您的模型的验证器将允许 Rails 在将它们插入数据库之前捕获它们。这也是很好的设计和实践。

如果你忽略这些,你会得到 MySQL 错误。

例如。假设我有一个 Comment 模型,它包含一个名为 body 的属性字符串,它在我的表中不能为 nil。

class Comment < ActiveRecord::Base
end

如果我尝试过:

comment = Comment.create(body: nil)

我会得到以下异常。

ActiveRecord::StatementInvalid: Mysql2::Error: Column 'body' cannot be null:

这很糟糕。您的应用程序的自然流程将会中断。

但是,如果我像这样将验证器放入我的模型中

class Comment < ActiveRecord::Base
validates :body, presence: true
end

并尝试了以下方法:

comment = Comment.create(body: nil)

我不会抛出异常,但我的变量的 errors 数组会告诉我出了什么问题。

comment.errors.full_messages
=> ["Body can't be blank"]

将验证器放入您的模型并允许进行良好设计是一种很好的做法。

关于ruby-on-rails - 如果模式已经是限制性的,这些模型验证是否过大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7943668/

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