Ruby on Rails - 设置空外键

tay*_*nan 4 ruby mysql ruby-on-rails foreign-keys ruby-on-rails-5

如何将外键设置为空?因为我想关联两个表,用户和团队,但并不强制用户必须拥有团队。

rails g scaffold Time name: string user: references

Yur*_*rii 5

在数据库级别允许为空。在时间模型中添加可选选项,例如 -在此处belongs_to :user, optional: true 检查相关文档


quy*_*tdc 5

Rails 级别(模型验证)

在 Rails 4.x 中,定义引用时,关联的记录belongs_to是可选的。从 Rails 5.x 开始,此关联是必需的。

在 Rails 4 中,要使关联记录成为必需,您将执行以下操作

class Photo
  belongs_to :user, required: true
end
Run Code Online (Sandbox Code Playgroud)

在 Rails 5 中,要使关联记录成为可选的,您将执行以下操作

class Photo
  belongs_to :user, optional: true
end
Run Code Online (Sandbox Code Playgroud)

数据库级别

您需要确保您的迁移没有约束null: false。您应该检查迁移以确保它如下所示

create_table :photos do |t|
   t.references :user, null: true, foreign_key: true
end
Run Code Online (Sandbox Code Playgroud)