ruby-on-rails - rails : validating a field is present only if another is present

标签 ruby-on-rails ruby validation activerecord

我有一个模型,其中有两个字段在技术上可以为空。字段名称是 :is_activated:activated_at:activated_at 仅在 :is_activated 设置为 true 时才需要。如果 :is_activatedfalse,则不需要存在。在 Rails 中将此验证直接设置到 ActiveRecord 中的合适方法是什么?

最佳答案

您可以使用 Proc:activated_at 验证器上。

validates :activated_at, :presence, if: Proc.new { |a| a.is_activated? }

推荐阅读:


最后,您应该考虑将 :is_activated 重命名为 :activated。这在 Rails 中被认为是更好的做法。 is_ 前缀在其他语言中用于 bool 属性,因为它们的方法名称不支持 ? 字符。 Ruby 会,而 Rails 会在 bool 属性上生成 ___? 方法。因此,最好只调用属性 :activated 并使用 activated? 检查它。

关于ruby-on-rails - rails : validating a field is present only if another is present,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13750436/

相关文章:

javascript - 选择元素的 knockout 验证出现在页面加载时

java - Play Framework 自定义验证错误与多个字符串参数

ruby-on-rails - Ruby on rails 和 Node.js

ruby-on-rails - 在Ruby on Rails中使用12小时时间和时区的time_select

ruby-on-rails - 没有 Gem 的 Rails 分页

ruby-on-rails - ActiveRecord find_each 和 Postgres

ruby - 将参数传递给 ruby​​ 脚本

ruby-on-rails - 显示标题而不是搜索结果中的ID

ruby - Ruby String#dump 方法的逆向

javascript - Validate.js 不显示错误