PG :: ForeignKeyViolation:错误:更新或删除表“用户”
违反表上的外键约束“ fk_rails_fd01e11a00”
“ user_tasks”详细信息:仍从表中引用键(id)=(4)
“ user_tasks”。 :从“用户”中删除,在“用户”中。“ id” = $ 1
一个用户可以将任务分配给另一个用户。为此,我创建了一个通过表,该表连接任务表并自我连接用户表。该表如下所示:
| user_id | task_id | to_user_id |
UserTask(迁移):
class CreateUserTasks < ActiveRecord::Migration[5.0]
def change
create_table :user_tasks do |t|
t.references :user, index: true, foreign_key: true
t.references :task, foreign_key: true, unique: true
t.references :to_user, index: true
t.timestamps
end
add_foreign_key :user_tasks, :users, column: :to_user_id
add_index :user_tasks, [:user_id, :to_user_id], unique: false
end
end
型号如下:
用户:
class User < ApplicationRecord
has_many :user_tasks
has_many :tasks, through: :user_tasks, dependent: :destroy
end
UserTask:
class UserTask < ApplicationRecord
belongs_to :user
belongs_to :task
belongs_to :to_user, class_name: "User"
end
任务:
class Task < ApplicationRecord
has_many :user_tasks
has_many :users, through: :user_tasks, dependent: :destroy
has_many :to_users, through: :user_tasks, dependent: :destroy
end
问题是当我尝试删除用户时,它会产生错误外键约束错误,该错误仍然是用户表中的键
请帮助指导我在这里做错了什么。
最佳答案
class User < ApplicationRecord
has_many :user_tasks, dependent: :destroy
has_many :tasks, through: :user_tasks
end
我希望它能起作用???
交叉手指
关于mysql - 多态|自我参照| Rails Active记录模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45493233/