【发布时间】:2015-03-18 18:51:00
【问题描述】:
确保没有人可以通过控制台或尝试调用 model.destroy 的某些控制器删除 Rails 中的模型记录的正确方法是什么?或者甚至通过尝试销毁在与此不可删除模型的关系上设置了dependent: :destroy 的对象。
这永远不会起作用:
User.first.destroy
我绝不希望某些模型在任何情况下都丢失(当然,除了直接访问数据库或更改 Ruby 代码)。
【问题讨论】:
-
您可以随时覆盖此模型中的
destroy方法。 -
@MarekLipka - 这是处理这个问题的正确方法吗?没有其他方法可以销毁模型记录吗?
-
您可能还需要注意
delete:api.rubyonrails.org/classes/ActiveRecord/… -
总是有其他方法可以从数据库中销毁模型记录。您也可以覆盖公共
delete方法,但您仍然可以销毁您的记录,例如delete_all,或者您可以调用私有destroy_row方法等。 -
在数据库级别处理这个可能更容易,例如在 MySQL 中设置没有
DELETE权限的用户或使用BEFORE DELETE触发器。
标签: ruby-on-rails ruby ruby-on-rails-4 model ruby-on-rails-4.2