我有一个模型 User
它自动有一个 Task
生成。
我想禁止编辑或删除此任务。
我需要对我的 Controller 进行哪些修改?是否有一个优雅的解决方案,或者我是否需要在每次编辑/销毁时检查它是否是有问题的任务。
最佳答案
您可以使用验证来很好地做到这一点。
class Thing < ActiveRecord::Base
validate :locked_cannot_be_modified
private
def locked_cannot_be_modified
errors.add(:base, "Entry is locked") if changes.any? && whatever_logic_makes_it_locked
end
end
或者,您可以实现只读?在模型上:
class Thing < ActiveRecord::Base
def readonly?
whatever_logic_makes_it_locked || super
end
end
这种方法将引发异常而不是验证错误。我想这取决于你想要做什么,哪种方法更好。
关于ruby-on-rails-3 - 如何 "lock"一条记录不被更新或删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7183740/