Rails:对同一模型错误的多个引用

时间:2015-10-16 15:08:27

标签: ruby-on-rails ruby postgresql heroku

我的消息模型有用户团队成员(两者都是用户)。 模型是:

# 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:错误:关系“teammembers”不存在   :ALTER TABLE“messages”ADD CONSTRAINT“fk_rails_7efc67ccc9”   外键(“teammember_id”)     参考“teammembers”(“id”)

您知道问题是什么,我该如何解决?

1 个答案:

答案 0 :(得分:2)

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