迁移中default和null之间的区别是什么

gla*_*kou 11 ruby ruby-on-rails ruby-on-rails-3

有什么区别:

t.boolean :test, :default => true
Run Code Online (Sandbox Code Playgroud)

t.boolean :test, :null => true
Run Code Online (Sandbox Code Playgroud)

t.boolean :test, :default => true, :null => true
Run Code Online (Sandbox Code Playgroud)

编辑

以下是否有意义?

t.boolean :test, :default => true, :null => false
Run Code Online (Sandbox Code Playgroud)

Tar*_*ast 27

"null"表示"您是否可以在此列中输入空值"?

而"默认"表示"如果此列中存在空值...则使用此默认值"

所以,对于你的例子:

t.boolean :test, :default => true
Run Code Online (Sandbox Code Playgroud)

"如果你不打扰为它设置一个值,这个布尔列将插入一个真值"

t.boolean :test, :null => true
Run Code Online (Sandbox Code Playgroud)

"这个布尔列将允许您将其设置为true,false或null - 它将保持您设置它的方式"

t.boolean :test, :default => true, :null => true
Run Code Online (Sandbox Code Playgroud)

"这个布尔列将允许您将其设置为true,false或null ...但如果将其设置为null,它将自动设置为true"


Thi*_*ago 5

:default - 列\xe2\x80\x99s 默认值。使用 nil 表示 NULL。

\n\n

:null - 允许或不允许列中存在 NULL 值。该选项可以命名为:null_allowed。

\n\n

在第一个选项中,如果不指定任何内容,rails 会将 true\n在第二个选项中,它将允许值为 null。\n在第三个选项中,两者都适用,值可以是 true、false 和 nil

\n