gpt4 book ai didi

ruby-on-rails - Rails ActiveRecord 有条件地保护属性不被修改

转载 作者:行者123 更新时间:2023-12-04 04:59:30 26 4
gpt4 key购买 nike

我有一个 Messagecontent 的模型属性(字符串)和 sent属性( bool 值)。 A 留言content应该是可修改的,直到它被发送,之后该字段应该变为只读。 (其他属性仍然可以修改,例如 message_opened )。

我怎样才能做到这一点?我已经研究过覆盖 readonly? (仅适用于记录级别),attr_readonly (非条件)和验证(不知道如何使 content 的验证取决于其旧值和 sent 字段)。

最佳答案

结果证明验证是正确的方法:创建一个使用 attribute_changed? 的自定义验证(“属性”是属性的名称,在本例中为“内容”)和条件验证。

消息.rb:

validate_on_update :reject_modifying_content, if: :sent?

def reject_modifying_content
errors[:content] << "can not be changed!" if self.content_changed?
end

Rails 3 check if attribute changed , Setting a field to read-only in Rails after it's createdhttp://api.rubyonrails.org/classes/ActiveModel/Dirty.html了解更多信息。

关于ruby-on-rails - Rails ActiveRecord 有条件地保护属性不被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16317316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com