Вы можете сделать это так:
create_table :courses do |t|
t.string :name
t.references :transferrable_as, references: :courses
t.references :same_as, references: :courses
t.timestamps
end
или использование t.belongs_to
в качестве псевдонима для t.references
Вы не можете добавить foreign_key: true
к этим двум ссылочным строкам. Если вы хотите пометить их как внешние ключи на уровне базы данных, вам нужно выполнить миграцию с этим:
add_foreign_key :courses, :courses, column: :transferrable_as_id
add_foreign_key :courses, :courses, column: :same_as_id