ruby-on-rails – ActiveRecord验证中属性的新旧值
发布时间:2020-12-17 02:56:22 所属栏目:百科 来源:网络整理
导读:在 Ruby中,我如何运行一个验证,如果它曾经是Y,那么模型属性只能是X?该示例将是正在进行或完成的属性状态.我想说当用户标记对象状态时,它总是可以标记为进行中,但只有在第一次标记为进行中时才能标记为完成. validate :status_changedef status_change unles
在
Ruby中,我如何运行一个验证,如果它曾经是Y,那么模型属性只能是X?该示例将是正在进行或完成的属性状态.我想说当用户标记对象状态时,它总是可以标记为进行中,但只有在第一次标记为进行中时才能标记为完成.
validate :status_change def status_change unless self.status == "complete" && #here i want to say self.status used to be "in progress" errors[:base] << "Can only mark object complete after it was first marked in progress" end end 解决方法
请考虑使用
ActiveModel::Dirty
它提供了跟踪这些更改的方法. before_update :status_change def status_change unless status == "complete" && status_was == "in-progress" errors[:base] << "Can only mark object complete after it was first marked in progress" end end 此外,它不需要使用自我.关键字在这里 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |