繁体   English   中英

如何拒绝空白的before_save回调轨道?

[英]How to reject blank before_save callback rails?

我想用模型回调拒绝空白参数

模式:面试

+----------------+-------------+------+-----+---------+----------------+
| 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. 面试1(面试日期:'2019-09-15 22:00',注意:'abc')
  2. 面试2(visit_at:``,note:'bcd')

输出:

  1. 面试1(面试日期:2019-09-15 22:00,注意:'abc')
  2. 面试2(访谈时间:2019-09-15 22:00,注意:'abc')

创建时before_save返回错误的属性。 我该如何解决?

谢谢你的帮助

您可以尝试一下,您想创建一个验证,这将防止记录被保存并使模型记录在调用valid?时返回false valid? 在上面。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM