Rails 中同一个模型的多个关联

dan*_*ker -1 postgresql activerecord ruby-on-rails heroku ruby-on-rails-4

比方说,我有一个模型,狗和狗的每一个正好有2猫“敌人”,enemy1而且enemy2,我怎么写迁移文件,这样我可以调用dog.enemy1来检索第一个敌人并dog.enemy2检索第二个敌人?我试过这个:

create_table :dog do |t|
    t.string :name
    t.timestamps null: false
    end
    add_index :dog, :name

    add_foreign_key :dogs, :cats, column: :enemy1_id
    add_foreign_key :dogs, :cats, column: :enemy2_id
end
Run Code Online (Sandbox Code Playgroud)

我也用该t.references方法尝试过,但无法让它工作。一直在研究这个问题几个小时。它在开发中运行良好,但不适用于 Heroku Postgres。我得到的错误是

ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:column     "enemy1_id" referenced in foreign key constraint does not exist.
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

lcg*_*ida 5

移民:

create_table :dog do |t|
  t.string :name
  t.integer :enemy1_id
  t.integer :enemy2_id
  t.timestamps null: false
end
Run Code Online (Sandbox Code Playgroud)

狗模型:

class Dog < ActiveRecord::Base 
  has_one :enemy1, class: 'Cat', foreign_key: :enemy1_id
  has_one :enemy2, class: 'Cat', foreign_key: :enemy2_id
end
Run Code Online (Sandbox Code Playgroud)