gpt4 book ai didi

ruby-on-rails - rails : violates foreign key constraint

转载 作者:数据小太阳 更新时间:2023-10-29 06:48:08 26 4
gpt4 key购买 nike

我有三个模型:BookgenreBookGenre,下面是关系:

class BookGenre < ActiveRecord::Base
belongs_to :book
belongs_to :genre
end


class Book < ActiveRecord::Base
has_many :book_genres
has_many :genres, through: :book_genres
end


class Genre < ActiveRecord::Base
has_many :book_genres
has_many :books, through: :book_genres
end

然后我使用 seed 文件将数据放入这些表中。

但是当我想再次执行 rake db:seed 时,它显示了这个错误

ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR:  update or delete on table "books" violates foreign key constraint "fk_rails_4a117802d7" on table "book_genres"
DETAIL: Key (id)=(10) is still referenced from table "book_genres".

在我的seed.rb

Book.destroy_all
Genre.destroy_all
...create data

最佳答案

dependent: :destroy 选项添加到您的 has_many 定义中。

Check docs

尊重数据完整性的更好选择是在数据库级别设置 CASCADE DELETE:比如说,您有 comments 表和 users table 。用户有很多评论你想在表 comments 中添加一个 foreign_key 并设置在用户被销毁时删除评论你可以使用以下方法(on_delete: :cascade 选项将确保它):

add_foreign_key(
:comments,
:users,
column:
:user_id,
on_delete: :cascade
)

关于ruby-on-rails - rails : violates foreign key constraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31826409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com