Rails NullBoolean?

Chr*_*ele 2 ruby activerecord ruby-on-rails sqldatatypes ruby-on-rails-3

Rails是否具有Django NullBoolean的内置等价物,接受三个值(nil,true,false)?如果没有,你会如何推荐实施它?

就我而言,我有一张桌子Overrides和一张桌子Objects.Objects可以有很多Overrides.Overrides在结构上几乎相同Objects.在读取a的值之前Object,我将其拉出Overrides,有条件地通过它们,然后将这些值应用于Object.

任何Overridenil的字段都不会应用任何更改.这个系统对我来说效果很好,但我刚刚添加了一个布尔字段Objects,所以我需要在其上放置一个可以为空的布尔值Overrides.Django NullBoolean在这种情况下运行良好,但我找不到相应的rails.

mu *_*ort 5

ActiveRecord分隔数据库中的可空性和类型.此外,除非您明确指定:null => false何时创建/更改列,否则ActiveRecord会将列创建为可为空.所以你应该能够创建一个标准的布尔列:

create_table "..." do |t|
  #...
  t.boolean "boolean_column"
end
Run Code Online (Sandbox Code Playgroud)

然后根据需要分配true/false/nil:

o.boolean_column = true  # true
o.boolean_column = false # false
o.boolean_column = nil   # null
Run Code Online (Sandbox Code Playgroud)