我有一个像这样定义的无表类:
class MyClass
class MyClassRules < ActiveRecord::Base
column :a, :integer
column :b, :boolean
column :c, :datetime
column :d, :decimal, :precision => 10, :scale => 4
column :e, :string
end
end
当我实例化MyClassRules
类型的对象时,类型MyClass
的对象会自动生成,并且它被序列化存储在名为my_class
的{{1}}表中的单个列中}并可从rules
访问。所以我也可以拨打my_obj.rules
。
我遇到的问题是十进制列的默认值。在构建对象时不提供值,我希望所有值都默认为nil。相反,我得到的是:
my_obj.rules.a
实际上,大多数默认为零,但#<MyClass::MyClassRules
a: nil,
b: nil,
c: nil,
d: #<BigDecimal:7fce8f295620,'0.0',9(9)>,
e: nil
>
默认为decimal
。我甚至尝试将0.0
param传递给声明,但这没有任何作用。
如何强制小数列默认为nil?
答案 0 :(得分:0)
我正在回答我自己的问题。修改类以将值初始化为nil有效:
class MyClass
class MyClassRules < ActiveRecord::Base
after_initialize :init
column :a, :integer
column :b, :boolean
column :c, :datetime
column :d, :decimal, :precision => 10, :scale => 4
column :e, :string
def init
self.d = nil
end
end
end
似乎没必要,但它完成了工作。