use*_*773 6 ruby-on-rails rails-migrations
我与用户和学期有以下关联。我创建了以学期ID作为外键的用户表。因此,如果不存在学期ID,则不会创建用户。但是在注册表格中,学期ID是可选的。
class User < ApplicationRecord
belongs_to :semester
end
class Semester < ApplicationRecord
has_many :users
end
class CreateUsers < ActiveRecord::Migration[5.1]
def change
create_table :users do |t|
t.string :email
t.references :semester, foreign_key: true
t.timestamps
end
end
end
Run Code Online (Sandbox Code Playgroud)
那么,如何创建另一个迁移来删除外键约束呢?因此,在用户表中,我应该有两列email和semester_id,但semester_id不应具有外键约束,因为它是一个可选字段。
max*_*max 11
class RemoveSemestersFKFromUsers < ActiveRecord::Migration[5.1]
def change
if foreign_key_exists?(:users, :semesters)
remove_foreign_key :users, :semesters
end
end
end
Run Code Online (Sandbox Code Playgroud)
请记住将关联设置为optional: true也删除存在验证。
Ben*_*Ben -1
在您的模型中将参考设置为可选:
class User < ApplicationRecord
belongs_to :semester, optional: true
end
Run Code Online (Sandbox Code Playgroud)
请参阅此处,4.1.2.11
| 归档时间: |
|
| 查看次数: |
4116 次 |
| 最近记录: |