Я использую PostgreSQL в качестве моего db в рельсах. У меня есть модель User и модель продукта. Я пытаюсь создать модель транзакции, где я хочу обратиться к пользователю дважды, один раз в качестве покупателя и один раз в качестве продавца. Я создал модели, предложенные в этой статье (ответ toasterlovin) Write a migration with reference to a model twice Однако это дает мне ошибку, когда я использую PostgreSQL (с SQLite он работал нормально). Я получаю следующую ошибку. Что я могу сделать, чтобы решить эту проблему?Ссылка на таблицу дважды в rails/postgres
{StandardError: An error has occurred, this and all later migrations canceled:
PG::UndefinedTable: ERROR: relation "buyers" does not exist
: ALTER TABLE "transactions" ADD CONSTRAINT "fk_rails_0b24a7fcc3"
FOREIGN KEY ("buyer_id")
REFERENCES "buyers" ("id")
C:/Users/Powerhouse/Desktop/CodingDojo/ruby/rails/demo/db/migrate/20161024032156_create_transactions.rb:3:inchange'
migrate'
C:in
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "buyers" does not exist
: ALTER TABLE "transactions" ADD CONSTRAINT "fk_rails_0b24a7fcc3"
FOREIGN KEY ("buyer_id")
REFERENCES "buyers" ("id")
C:/Users/Powerhouse/Desktop/CodingDojo/ruby/rails/demo/db/migrate/20161024032156_create_transactions.rb:3:inchange'
migrate'
C:in
PG::UndefinedTable: ERROR: relation "buyers" does not exist
C:/Users/Powerhouse/Desktop/CodingDojo/ruby/rails/demo/db/migrate/20161024032156_create_transactions.rb:3:inchange'
migrate'
C:in
Tasks: TOP => db:migrate
(See full trace by running task with --trace) }
Модели
class User < ActiveRecord::Base
has_many :products
has_many :sales, :class_name => 'Transaction', :foreign_key => 'seller_id'
has_many :purchases, :class_name => 'Transaction', :foreign_key => 'buyer_id
end
Модель продукта
class Product < ActiveRecord::Base
belongs_to :user
end
модель транзакций
class Transaction < ActiveRecord::Base
belongs_to :buyer, :class_name => 'User'
belongs_to :seller, :class_name => 'User'
belongs_to :product
end
миграции файлов
Пользователь
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.timestamps null: false
end
end
end
Продукт
class CreateProducts < ActiveRecord::Migration
def change
create_table :products do |t|
t.references :user, index: true, foreign_key: true
t.string :name
t.timestamps null: false
end
end
end
Transaction
class CreateTransactions < ActiveRecord::Migration
def change
create_table :transactions do |t|
t.references :buyer, index: true, foreign_key: true
t.references :seller, index: true, foreign_key: true
t.references :product, index: true, foreign_key: true
t.timestamps null: false
end
end
end
вставьте свои модели. – Sravan
Код для моделей и миграции добавлен @Sravan – commonsensei