ruby-on-rails - 如何编写自定义验证以防止记录具有所有空属性?
问题描述
我想编写一个 Active Record 验证,当用户在其表单中没有输入任何内容时会引发错误。假设用户有年龄和姓名属性,那么如果他们不输入年龄或不输入姓名就可以了,但不应该同时输入两者。所以我想要这样的东西:
class User < ActiveRecord::Base
validate :not_all_empty
def not_all_empty
if name.blank? && age.blank?
errors.add (XXXX)
end
end
end
解决方案
使用由返回的哈希.attributes
并检查其值,跳过由 ActiveRecord 填充的字段 - 时间戳和 id。
def not_all_empty
if attributes.except('id', 'created_at', 'updated_at').values.all?(&:blank?)
errors.add ('XXXX')
end
end
推荐阅读
- spring-cloud - Spring Cloud Contract for AMQP - RabbitTemplate 的自动装配问题
- c++ - 初始化递增递减与和或运算符
- java - 在构造函数中设置父子关系而不泄漏“this”变量
- java - 我可以在从超级继承的子类中设置布尔值吗?
- php - 如何在谷歌应用引擎 (php) 中使用 autoload.php?
- python - Flask-SQLAlchemy 更新一对多记录
- python - 在 Pycharm 中安装 Orange3 会出错
- r - parse_date_time 返回一个 NA 向量
- c# - 尝试在 SQL 字符串中使用 GUID 时出现语法错误
- bash - 在 WSL bash 脚本中将目录更改为 Window 的用户目录