ruby-on-rails - rails : Multiple references to the same model error

标签 ruby-on-rails ruby postgresql heroku

我有一个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/

相关文章:

postgresql - 显示部分文档预览的 Postgres/全文搜索

javascript - Ruby on Rails : Why doesn't my delete link work?

PostgreSQL:设置时区格式

mysql - 获取所有关联记录都具有属性的记录

ruby - 最新的 ruby 在哪里 : Ruby gems equivalent of search. cpan.org/recent

ruby - 如何用两个或多个分隔符拆分字符串

ruby-on-rails - has_many 关系的动态类名

postgresql - 如何减少具有有序结果的 postgresql IN 查询的索引扫描时间?

javascript - Javascript 中的 Erb 导致页面加载错误

mysql - Rails 将两个不同的模型实例保存为单个事务