【发布时间】:2013-06-29 13:38:58
【问题描述】:
我有两个模型之间的多对多关系如下:
#users.rb
has_many :users_to_roles
has_many :roles, through: :users_to_roles
#users_to_roles.rb
belongs_to :user
belongs_to :role
#roles.rb
has_many :users_to_roles
has_many :users, through: :users_to_roles
如果有“处于此角色”的用户,我想禁用删除角色。 Here我找到了两个选择谁应该做这项工作:
:restrict_with_exception 如果存在异常,则会引发异常 任何关联的记录 :restrict_with_error 会导致错误 如果有任何关联对象,则添加到所有者
但是没有关于 this 的语法以及它应该如何工作的示例。
您能否帮助使其有效:
#roles.rb
has_many :users_to_roles
has_many :users, through: :users_to_roles, dependent: restrict_with_exception
【问题讨论】:
-
您在这方面的看法如何?如果您不希望用户删除某些内容,您可以使用 Ruby 在指定条件下禁用删除按钮/链接。我认为这比允许删除操作开始,然后在不满足条件时生成错误要好。
-
@mbratch 我已经这样做了。你觉得这就够了吗?我是 Rails 新手,但感觉不到这种良好的保护 - 毕竟如果有人成功删除角色,应用程序将停止正常工作。
-
啊,这是个好问题。我想用户可以构建一条路线,当您不打算这样做时,该路线将被删除。您可以执行此处描述的操作:stackoverflow.com/questions/123078/…
标签: ruby-on-rails-3 activerecord dependencies model-associations