我有一个Message 模型,它有一个user 和一个teammember(两者都是用户)。 模型是:
# message.rb
class Message < ActiveRecord::Base
belongs_to :user
belongs_to :teammember, :class_name => "User", :foreign_key => 'teammember_id'
end
# user.rb
class User < ActiveRecord::Base
has_many :messages
end
我有这个迁移:
class CreateMessages < ActiveRecord::Migration
def change
create_table :messages do |t|
t.references :user, index: true, foreign_key: true
t.references :teammember, index: true, foreign_key: true
t.text :body
t.boolean :read, default: false
t.timestamps null: false
end
end
end
当我在本地(使用 sqlite3)运行 rake db:migrate 时,一切正常。 问题是当我部署到 heroku(使用 postgresql)并运行
heroku run rake db:migrate
它引发下一个错误:
PG::UndefinedTable: ERROR: relation "teammembers" does not exist : ALTER TABLE "messages" ADD CONSTRAINT "fk_rails_7efc67ccc9" FOREIGN KEY ("teammember_id") REFERENCES "teammembers" ("id")
您知道问题出在哪里吗?我该如何解决?
最佳答案
Rails 根据关联进行猜测,因为您正在引用一个表,它无法从关联中确定您必须自己添加它。
class CreateMessages < ActiveRecord::Migration
def change
create_table :messages do |t|
t.references :user, index: true, foreign_key: true
t.references :teammember, index: true
t.text :body
t.boolean :read, default: false
t.timestamps null: false
end
add_foreign_key :messages, :users, column: :teammember_id
end
end
关于ruby-on-rails - rails : Multiple references to the same model error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33173814/