ruby-on-rails - 如何拒绝空白 before_save 回调轨道?
问题描述
我想用模型回调拒绝空白参数
架构:访谈
+----------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| note | varchar(50) | YES | | NULL | |
| interview_at | datetime | NO | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+----------------+-------------+------+-----+---------+----------------+
控制器:
def interviews
return [] unless params[:interviews]
parse_params(:interviews).map do |interview|
Interview.find_or_initialize_by( interview }) )
end
end
模型:
class Interview < ApplicationRecord
before_save :remove_blank
def remove_blank
@new_record = false if interview_at.blank?
end
end
例子:
输入:
- 采访1(interview_at:'2019-09-15 22:00',注:'abc')
- 采访 2( interview_at: '', 注意: 'bcd')
输出:
- 采访一(采访时间:2019-09-15 22:00,注:'abc')
- 采访2(采访时间:2019-09-15 22:00,注:'abc')
before_save 在我创建时返回错误的属性。我该如何解决?
谢谢你的帮助
解决方案
你可以试一试,你会想要创建一个验证,这将防止记录被保存,并使模型记录在你调用valid?
它时返回 false。
class Interview < ApplicationRecord
validate :interview_at_not_blank
def interview_at_not_blank
errors.add(:interview_at, :blank, message: "cannot be blank") unless interview_at.blank?
end
end
推荐阅读
- python - ModuleNotFoundError:没有名为“ckeditor”的模块
- android - 在以编程方式安装 apk Android 时解析包时出现问题
- jquery - 是否有任何原因将错误消息数组传递给 toastr js。我想使用数组显示多个 toastr 消息
- google-cloud-platform - GCE 元数据和地形
- sql - ADODB RecordSet 按日期排序:不起作用
- azure - 在 Azure 中,为什么我在应用注册的“公开 API”页面上看不到“授权的客户端应用程序”部分
- android - Android下同步Video和Sensor数据
- r - 将 S4 转换为列表到数据框时出现 lapply 故障
- node.js - 根据字段值升序对记录进行排序
- java - 使用字符串打印 r 元素的所有可能组合