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
您可以在此处(,)了解更多有关它的信息。将默认值设置为布尔值是一种良好的做法,因此在您创建关系时,无需手动将其设置为活动状态。将默认值设置为布尔值是一种良好的做法,因此无需手动将其设置为活动状态,在你创建关系的时候