Rails迁移:t.reference与替代名称?
所以我有一个像这样的学校课程的create_table:
create_table :courses do |t| t.string :name t.references :course t.timestamps end 但我希望它引用其他两个课程,如:
 has_many :transferrable_as # A Course has_many :same_as # Another Course 
我可以说以下吗?
 t.references :transferrable_as, :as=> :course 
	
你可以这样做:
 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.belongs_to的别名 
 你不能添加foreign_key: true对这两个引用行是foreign_key: true 。 如果您想在数据库级别将它们标记为外键,则需要使用以下命令进行迁移: 
 add_foreign_key :courses, :courses, column: :transferrable_as_id add_foreign_key :courses, :courses, column: :same_as_id 
你可以在最初的移植/列定义(至less目前在Rails 5中)完成这一切:
 t.references :transferable_as, index: true, foreign_key: { to_table: :courses } t.references :same_as, index: true, foreign_key: { to_table: :courses } 
我认为这个线程有更多的Rails-ish方法: 脚手架ActiveRecord:两列相同的数据types
在迁移中:
t.belongs_to:transferrable_as
t.belongs_to:same_as
 我不认为references接受:as选项,但您可以手动创build您的列… 
 create_table :courses do |t| t.string :name t.integer :course1_id t.integer :course2_id t.timestamps end 
作为对这个问题的一个附加答案 – 模型应该有以下线来完成关联:
  belongs_to :transferrable_as, class_name: "Course" belongs_to :same_as, class_name: "Course"