- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已将我的 Rails 应用程序从 SQLite 更新到 Postgres,当我尝试添加新产品库存时出现以下错误:
ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR: insert or update on table "stocks" violates foreign key constraint "fk_rails_6d8dd2a287"
DETAIL: Key (sku)=(16819) is not present in table "products".
: INSERT INTO "stocks" ("store_code", "sku", "quantity", "date", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id"
Store.rb
class Store < ApplicationRecord
has_many :stocks, -> { group(:sku) }, foreign_key: :store_code, primary_key: :store_code
has_many :products, through: :stocks
end
Product.rb
class Product < ApplicationRecord
has_many :stocks, -> { group(:store_code) }, foreign_key: :sku, primary_key: :sku
has_many :stores, through: :stocks
end
股票.rb
class Stock < ApplicationRecord
belongs_to :store, primary_key: :store_code, foreign_key: :store_code, class_name: 'Store'
belongs_to :product, primary_key: :sku, foreign_key: :sku, class_name: 'Product'
end
我的迁移是:
class CreateStores < ActiveRecord::Migration[5.0]
def change
create_table :stores do |t|
t.integer :store_code, null: false
t.string :name
t.string :address
t.timestamps
end
add_index :stores, :store_code, unique: true
end
end
class CreateProducts < ActiveRecord::Migration[5.0]
def change
create_table :products do |t|
t.integer :sku, null: false
t.string :product_type
t.string :name
t.decimal :price, precision: 15, scale: 2
t.integer :volume
t.decimal :abv, precision: 3, scale: 1
t.integer :sweetness
t.string :style
t.string :country
t.string :region
t.integer :year
t.text :notes
t.timestamps
end
add_index :products, :sku, unique: true
end
end
class CreateStocks < ActiveRecord::Migration[5.0]
def change
create_table :stocks do |t|
t.integer :store_code, index: true
t.integer :sku, index: true
t.integer :quantity
t.date :date, index: true
t.timestamps
end
add_foreign_key :stocks, :stores, column: :store_code
add_foreign_key :stocks, :products, column: :sku
end
end
错误是说 sku 不在产品表中,但它在。如果我在产品表的那个 sku 上运行 SQL 查询,它会返回一行。
我做错了什么?
最佳答案
因此,通过重新启动并重置所有内容来解决问题。我重新启动了 postgres,退出了服务器和控制台,运行了 rake db:migrate:reset
,现在我可以毫无问题地插入股票了。
关于ruby-on-rails - PG::ForeignKeyViolation: 错误:在表上插入或更新违反了外键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40143485/
我已将我的 Rails 应用程序从 SQLite 更新到 Postgres,当我尝试添加新产品库存时出现以下错误: ActiveRecord::InvalidForeignKey: PG::Forei
我有几个表具有与之关联的外键约束,每个表都以分层方式引用另一个表,如下所述。 当我试图销毁一家至少有 1 个项目、至少有 1 个任务、至少有 1 个任务时间的公司时... irb(main):014:
我的模型: class Foo < ActiveRecord::Base has_many :bars, inverse_of: :foo accepts_nested_attributes_
我有一个Book 模型和一个User 模型。我正在尝试在 books 表中创建一个名为 author_id 的新列,它实际上是 users 表的外键。 我关注了this article by Josh
我有 2 个模型,Bidding 和 BiddingItem。 class Bidding < ActiveRecord::Base has_many :bidding_items, depen
我正在使用 Active Admin,因此 adminuser 可以创建/删除类别、标签和产品。 我可以创建 Labels、Categories 和 Products 而没有任何问题,但是当我想删除标
我遇到了 Minitest 和关联 ActiveRecord 模型 (Rails.4.2.3) 的问题。 这是两个模型: # vanguard_fund.rb class VanguardFund <
我最近将 has_and_belongs_to_many (HABTM) 关联切换为 has_many :through 关联,现在由于违反外键约束,我有很多失败的测试。这是一个示例测试失败消息: D
所以我又发了一篇关于这个 issue 的帖子,我想我会进一步分解它,看看 StackOverflow 的好人是否能弄清楚发生了什么,因为我做不到。因此,我使用 setUpTestData 在下面生成了
我是一名优秀的程序员,十分优秀!