ruby-on-rails – 由于外键约束,无法删除对象
发布时间:2020-12-16 19:48:39 所属栏目:百科 来源:网络整理
导读:尝试做一个简单的user.destroy但运行到以下错误: 错误:表“用户”上的更新或删除违反表“身份”上的外键约束“fk_rails_5373344100” 详细信息:Key(id)=(2)仍然从表“identity”引用. 这是我的身份迁移 class CreateIdentities ActiveRecord::Migration d
尝试做一个简单的user.destroy但运行到以下错误:
错误:表“用户”上的更新或删除违反表“身份”上的外键约束“fk_rails_5373344100” 这是我的身份迁移 class CreateIdentities < ActiveRecord::Migration def change create_table :identities do |t| t.references :user,index: true,foreign_key: true t.string :provider t.string :uid t.timestamps null: false end end end 这是我的用户和身份模型: class Identity < ActiveRecord::Base belongs_to :user validates_presence_of :uid,:provider validates_uniqueness_of :uid,:scope => :provider def self.find_for_oauth(auth) find_or_create_by(uid: auth.uid,provider: auth.provider) end end 和用户: class User < ActiveRecord::Base TEMP_EMAIL_PREFIX = 'ricky@writeit.com' TEMP_EMAIL_REGEX = /ricky@writeit.com/ # Include default devise modules. Others available are: # :lockable,:timeoutable devise :database_authenticatable,:registerable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:omniauthable validates_format_of :email,:without => TEMP_EMAIL_REGEX,on: :update ... end 我新的外键和引用,所以我不知道如何解决这个问题.任何帮助将不胜感激. 谢谢 解决方法
您需要先删除引用用户的身份.然后你可以删除用户..默认情况下,外键正在执行限制,所以如果有任何引用,则不能删除该用户.
如果你想使用Rails来处理破坏你可以做的身份 class User < ActiveRecord::Base has_many :identities,dependent: :destroy ...... end 这将导致Rails销毁所有依赖记录. 但是当您使用外键时,您可以调整迁移以设置级联删除 add_foreign_key :identities,:users,on_delete: :cascade 假设rails 4.2具有本地支持 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |