Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 对象表中的布尔活动列是否应具有默认值?_Ruby On Rails - Fatal编程技术网

Ruby on rails 对象表中的布尔活动列是否应具有默认值?

Ruby on rails 对象表中的布尔活动列是否应具有默认值?,ruby-on-rails,Ruby On Rails,我刚刚在关系表中创建了一个activeboolean列,我想知道该列是否具有默认的true值是一种好的做法,或者如果最初将其保留为nil值是否最好 这是schema.rb文件 ... create_table "relationships", force: :cascade do |t| t.integer "follower_id" t.integer "followed_id" t.datetime "created_at",

我刚刚在
关系表中创建了一个
active
boolean列,我想知道该列是否具有默认的
true
值是一种好的做法,或者如果最初将其保留为
nil
值是否最好

这是
schema.rb
文件

  ... 

  create_table "relationships", force: :cascade do |t|
    t.integer  "follower_id"
    t.integer  "followed_id"
    t.datetime "created_at",                 null: false
    t.datetime "updated_at",                 null: false
    t.boolean  "active",      default: true
  end

  ...

在添加迁移的布尔列中设置默认值(
true
/
false
)始终是一种良好的做法。在布尔列中应避免
NULL

不设置此迁移的默认值

add_column :relationships, :active, :boolean
将生成三态布尔问题。您的
active
布尔列应仅为
true
false
,但它可以是
true
false
NULL
,并且此查询

从relationships.active=FALSE的关系中选择*

不会给出您期望的结果,因为
NULL
不等于
FALSE


您可以在此处(,)了解更多信息。

在添加迁移的布尔列中设置默认值(
true
/
false
)始终是一种很好的做法。在布尔列中应避免
NULL

不设置此迁移的默认值

add_column :relationships, :active, :boolean
将生成三态布尔问题。您的
active
布尔列应仅为
true
false
,但它可以是
true
false
NULL
,并且此查询

从relationships.active=FALSE的关系中选择*

不会给出您期望的结果,因为
NULL
不等于
FALSE


您可以在此处(,)了解更多有关它的信息。

将默认值设置为布尔值是一种良好的做法,因此在您创建关系时,无需手动将其设置为活动状态。

将默认值设置为布尔值是一种良好的做法,因此无需手动将其设置为活动状态,在你创建关系的时候