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