Ruby on rails 删除/销毁已通过的join_表上的记录
我呈现了一组复选框,我想删除Ruby on rails 删除/销毁已通过的join_表上的记录,ruby-on-rails,ruby,has-many-through,jointable,Ruby On Rails,Ruby,Has Many Through,Jointable,我呈现了一组复选框,我想删除用户的所有特权 当我选中其中一个复选框时,将创建一条记录 当我取消选中其中一个复选框时,记录将被删除 我已经搜索了所有相关的问题,但不幸的是没有一个有效 轨道5.2.3 用户 has_many :user_privileges, class_name: 'UserPrivileges' has_many :privileges, through: :user_privileges 特权 has_many :user_privileges, class_name:
用户的所有特权
- 当我选中其中一个复选框时,将创建一条记录
- 当我取消选中其中一个复选框时,记录将被删除
我已经搜索了所有相关的问题,但不幸的是没有一个有效
轨道5.2.3
用户
has_many :user_privileges, class_name: 'UserPrivileges'
has_many :privileges, through: :user_privileges
特权
has_many :user_privileges, class_name: 'UserPrivileges'
has_many :users, through: :user_privileges
用户权限
belongs_to :user
belongs_to :privilege
当我想删除(取消选中)该用户在join\u表中的最后一个权限记录时,问题就出现了
该记录仍然存在,无法删除/销毁该特定记录
我的直觉回忆起回调,我尝试了使用dependent
的不同方法,但最后一条记录仍然存在
欢迎任何提示
谢谢如果要从联接表中删除该记录,则需要将dependent::destroy
添加到has\u many:through
关系中
# privilege.rb
has_many :user_privileges, class_name: 'UserPrivileges'
has_many :users, through: :user_privileges, dependent: :destroy
请参见以下内容中的删除了什么?:
这里有一个潜在的陷阱:你和你属于很多很多人吗
有很多:通过关联在联接表中有记录,以及
相关记录。所以当我们调用其中一种删除方法时,
究竟应该删除什么
答案是,假设关联上的删除是正确的
关于删除所有者和关联用户之间的链接
对象,而不一定是关联对象本身。
因此,通过has_和_属于_many和has_many:通过,加入
记录将被删除,但关联的记录不会被删除
要运行dependent::destroy
回调,删除特权记录时必须使用destroy
或destroy\u all
方法
请参见中的删除或销毁?:
因为有很多,毁灭和毁灭,所有人都会称之为毁灭
删除记录以便运行回调的方法。
但是,delete和delete_all将根据
由:dependent选项指定的策略,如果否:dependent
选项,则它将遵循默认策略。默认值
策略是什么都不做(将外键保留在父ID中)
设置),除了has_many:to,其中默认策略为
delete_all(删除连接记录,而不运行其回调)
使用dependent::destroy
或向外键添加级联触发器都将删除孤立记录。但你问的是某种复选框,这意味着涉及到更多的运动部件,问题甚至可能不在模型层。你的问题解决了吗?@demir还没有时间测试它。希望能在今天完成,结果发现这是一个与复选框和我们如何呈现它们有关的问题。所以我认为你的答案是对的,但不适用于我的情况。我把复选框
和的链接留在这里,以备将来使用。事实证明,这是一个与复选框以及如何呈现复选框相关的问题。所以我认为你的答案是对的,但不适用于我的情况。我把复选框
和的链接留在这里,以备将来使用。