-1

我想在模型中映射数据。

例如,我有一个Plan模型,它有一个名为value. 然后我在param我们有{value: "unlimited"}, {value: "1"},..., 等等。

我想nil在它是时存储到数据库unlimited,并int在值是数字时存储。当值不是unlimitedor时,我也想进行验证digit

另外,当我在视图中显示数据时,我需要unlimited在它为零时显示。

最好的方法是什么?

干杯

4

1 回答 1

2

覆盖默认设置器:

def value=val
    if val == 'unlimited'
        self[:value] = nil
    else
        super val
    end
end

和默认吸气剂:

def value
    super||'unlimited'
end

并添加条件验证:

validates :value, numericality: { only_integer: true }, unless: -> {value == 'unlimited'}
于 2020-07-23T16:03:14.787 回答