Puedes hacerlo de esta manera:
create_table :courses do |t|
t.string :name
t.references :transferrable_as
t.references :same_as
t.timestamps
end
o usar t.belongs_to
como alias parat.references
No puede agregar foreign_key: true
a esas dos líneas de referencias. Si desea marcarlos como claves externas en el nivel de la base de datos, debe realizar una migración con esto:
add_foreign_key :courses, :courses, column: :transferrable_as_id
add_foreign_key :courses, :courses, column: :same_as_id
Actualizar
En Rails 5.1 y superior, puede agregar la clave externa en la migración en el create_table
bloque de esta manera:
create_table :courses do |t|
t.string :name
t.references :transferrable_as, foreign_key: { to_table: 'courses' }
t.references :same_as, foreign_key: { to_table: 'courses' }
t.timestamps
end