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