Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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 无法从关联表(Rails)中删除记录_Ruby On Rails - Fatal编程技术网

Ruby on rails 无法从关联表(Rails)中删除记录

Ruby on rails 无法从关联表(Rails)中删除记录,ruby-on-rails,Ruby On Rails,我有一个表group_transactions,其中属于某个组(groups-table)的用户存储该组成员之间的事务我试图实现的是在管理员删除用户时从组交易中删除记录-如果被删除用户的id与发卡机构id或借款人id列中的id匹配。 管理员删除用户时出现的错误是: SQLite3::SQLException:没有这样的列:group\u transactions.user\u id 它指向我在UsersController中的销毁操作 以下是我的用户模型: class User < App

我有一个表group_transactions,其中属于某个组(groups-table)的用户存储该组成员之间的事务我试图实现的是在管理员删除用户时从组交易中删除记录-如果被删除用户的id与发卡机构id或借款人id列中的id匹配管理员删除用户时出现的错误是: SQLite3::SQLException:没有这样的列:group\u transactions.user\u id 它指向我在UsersController中的销毁操作

以下是我的用户模型:

class User < ApplicationRecord
  has_many :transactions, dependent: :destroy
  has_many :relations, dependent: :destroy
  has_many :groups, through: :relations
  has_many :group_transactions, dependent: :destroy
end 
当我删除组时,所有关联的组事务都将被删除-它可以按照我的需要工作。 此外,当我删除属于没有任何组事务(无错误)的组的用户时,一切都正常。但是,如果存在组事务,则会发生以下错误-SQLite3::SQLException:没有这样的列:group\u transactions.user\u id

我知道group_交易没有“user_id”。它有“issuer_id”和“borrower_id”,在下面指向users表。 谢谢你的帮助和建议,
Luk

我认为这不起作用,因为用户类的
dependent::destroy
部分默认搜索GroupTransactions表的
group\u transactions.User\u id
字段,但它不存在(只有
issuer\u id
存在)

试着改变

  has_many :group_transactions, dependent: :destroy


我认为这不起作用,因为用户类的
dependent::destroy
部分默认搜索GroupTransactions表的
group\u transactions.User\u id
字段,但它不存在(只有
issuer\u id
存在)

试着改变

  has_many :group_transactions, dependent: :destroy


您必须在
用户
模型中更新关联

has_many :group_transactions, dependent: :destroy
像下面这样的

has_many :issuing_group_transactions, 
         class_name: "GroupTransaction", 
         foreign_key: "issuer_id", 
         dependent: :destroy
has_many :borrowing_group_transactions, 
         class_name: "GroupTransaction", 
         foreign_key: "borrower_id", 
         dependent: :destroy

您必须在
用户
模型中更新关联

has_many :group_transactions, dependent: :destroy
像下面这样的

has_many :issuing_group_transactions, 
         class_name: "GroupTransaction", 
         foreign_key: "issuer_id", 
         dependent: :destroy
has_many :borrowing_group_transactions, 
         class_name: "GroupTransaction", 
         foreign_key: "borrower_id", 
         dependent: :destroy

我已经改变了这一点,现在我得到了不同的错误:SQLite3::ConstraintException:外键约束失败。@L.Wini我认为这是导致问题的第二个外键,必须同时销毁两个用户才能销毁一个组\u事务。您是否知道如何克服此问题?我一直在考虑在\u destroy callback.@L.Wini之前,我认为最好的方法是删除2个外键中的1个。您将有一个外键“主”,和一个普通字段“从”。这将取决于这两项中哪一项最重要。Rails不需要显式的
foreign\u key
语句,它所需要的只是字段名,所以它应该可以正常工作。但是也许有更好的方法,我会这样做的,我已经改变了,现在我得到了不同的错误:SQLite3::ConstraintException:外键约束失败。@L.Wini我认为这是导致问题的第二个外键,必须同时销毁两个用户才能销毁一个组\u事务。您是否知道如何克服此问题?我一直在考虑在\u destroy callback.@L.Wini之前,我认为最好的方法是删除2个外键中的1个。您将有一个外键“主”,和一个普通字段“从”。这将取决于这两项中哪一项最重要。Rails不需要显式的
foreign\u key
语句,它所需要的只是字段名,所以它应该可以正常工作。但也许有更好的方法,这正是我要做的。我会得到以下错误:ActiveRecord::InvalidForeignKey in UsersController#destroy(前一个)SQLite3::ConstraintException:外键约束失败我获取以下错误:ActiveRecord::UsersController中的InvalidForeignKey#销毁(顶部)SQLite3::ConstraintException:外键约束失败
has_many :issuing_group_transactions, 
         class_name: "GroupTransaction", 
         foreign_key: "issuer_id", 
         dependent: :destroy
has_many :borrowing_group_transactions, 
         class_name: "GroupTransaction", 
         foreign_key: "borrower_id", 
         dependent: :destroy