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/

10-13 07:53