ruby-on-rails – ActiveRecord验证中属性的新旧值

ruby-on-rails – ActiveRecord验证中属性的新旧值,第1张

概述在 Ruby中,我如何运行一个验证,如果它曾经是Y,那么模型属性只能是X?该示例将是正在进行或完成的属性状态.我想说当用户标记对象状态时,它总是可以标记为进行中,但只有在第一次标记为进行中时才能标记为完成. validate :status_changedef status_change unless self.status == "complete" && #here i want to 在 Ruby中,我如何运行一个验证,如果它曾经是Y,那么模型属性只能是X?该示例将是正在进行或完成的属性状态.我想说当用户标记对象状态时,它总是可以标记为进行中,但只有在第一次标记为进行中时才能标记为完成.

valIDate :status_changedef 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"  endend
解决方法 请考虑使用 ActiveModel::Dirty

它提供了跟踪这些更改的方法.

before_update :status_changedef status_change  unless status == "complete" && status_was == "in-progress"     errors[:base] << "Can only mark object complete after it was first marked in progress"  endend

此外,它不需要使用自我.关键字在这里

总结

以上是内存溢出为你收集整理的ruby-on-rails – ActiveRecord验证中属性的新旧值全部内容,希望文章能够帮你解决ruby-on-rails – ActiveRecord验证中属性的新旧值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1287644.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存