the*_*ror 108 migration ruby-on-rails associations
所以我在学校的课程中有这样的create_table:
create_table :courses do |t|
t.string :name
t.references :course
t.timestamps
end
Run Code Online (Sandbox Code Playgroud)
但是我想要它参考另外两个课程,如:
has_many :transferrable_as # A Course
has_many :same_as # Another Course
Run Code Online (Sandbox Code Playgroud)
我可以说以下吗?
t.references :transferrable_as, :as=> :course
Run Code Online (Sandbox Code Playgroud)
Rya*_*yan 141
您可以在初始迁移/列定义中完成所有操作(至少目前在Rails 5中):
t.references :transferable_as, index: true, foreign_key: {to_table: :courses}
t.references :same_as, index: true, foreign_key: {to_table: :courses}
Run Code Online (Sandbox Code Playgroud)
Tob*_*obi 85
你可以这样做:
create_table :courses do |t|
t.string :name
t.references :transferrable_as, references: :courses
t.references :same_as, references: :courses
t.timestamps
end
Run Code Online (Sandbox Code Playgroud)
或者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
Run Code Online (Sandbox Code Playgroud)
the*_*ror 13
我认为这个线程有更多不同的Rails-ish方式: Scaffolding ActiveRecord:相同数据类型的两列
在迁移中:
t.belongs_to:transferrable_as
t.belongs_to:same_as
作为对该问题的补充回答-模型应具有以下行以完成关联:
belongs_to :transferrable_as, class_name: "Course"
belongs_to :same_as, class_name: "Course"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60772 次 |
| 最近记录: |