Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 删除/销毁已通过的join_表上的记录_Ruby On Rails_Ruby_Has Many Through_Jointable - Fatal编程技术网

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还没有时间测试它。希望能在今天完成,结果发现这是一个与复选框和我们如何呈现它们有关的问题。所以我认为你的答案是对的,但不适用于我的情况。我把
复选框
的链接留在这里,以备将来使用。事实证明,这是一个与复选框以及如何呈现复选框相关的问题。所以我认为你的答案是对的,但不适用于我的情况。我把
复选框
的链接留在这里,以备将来使用。