【问题标题】:Rails validation required parameter (lock_version)Rails 验证所需参数 (lock_version)
【发布时间】:2016-01-19 14:11:38
【问题描述】:

我有一个关于如何验证 Rails 模型所需更改的问题。

例如:

对于参数 lock_version,我们需要验证在尝试更新模型时该值是否始终存在。

是否有一些验证来测试更改是否存在?

谢谢

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

这种类型的验证由validates_presence_of处理。

好像你在找

validates_presence_of :lock_version, on: :update

我强烈建议看看http://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_presence_of

Rails 中有很多验证,这可能是最基本的一个。

http://guides.rubyonrails.org/active_record_validations.html

【讨论】:

  • 嗯,我不这么认为,我需要验证是否始终存在 :lock_version 。例如:如果用户发送它 nil,validates_presence_of 将添加一个错误,但如果用户没有发送它,活动记录将更新,我需要添加一个错误即使参数不存在
  • 不确定您的意思,但如果您希望验证器同时进行创建和更新,只需删除 on: :update 参数,如果您想验证该值不为零,则添加 allow_nil: false参数
【解决方案2】:

@jakub 是对的,但是如果您想要另一种验证字段的方式,您可以使用 html 验证。在需要填写的任何字段中添加required: true。即

<%= f.text_field :lock_version, required: true %>

如果用户尝试在没有此字段的情况下提交表单,他们会在该字段上弹出一条快速消息,告诉他们填写。

贾斯汀

【讨论】:

  • 例如:在模型用户validates_presence_of :lock_version。在 Rails 控制台上运行 User.first.update!({}) 时它可以工作,但我需要该属性 :lock_version 是必需的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-26
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
相关资源
最近更新 更多