Kit*_* Ho 0 ruby activerecord ruby-on-rails
我有一个使用rails 4.1的rails模型,其中一个字段是布尔类型.我想使用'y'或'yes'更改布尔值,但它不起作用.它只允许't','on',为真.我的数据库是postrgresql
2.1.1 :031 > a.default_indicator = 'y'
=> "y"
2.1.1 :032 > a.default_indicator
=> false
2.1.1 :033 > a.default_indicator = 'yes'
=> "yes"
2.1.1 :034 > a.default_indicator
=> false
2.1.1 :035 > a.default_indicator = 'true'
=> "true"
Run Code Online (Sandbox Code Playgroud)
谁知道为什么?
ActiveRecord::ConnectionAdapters::Column
当Rails需要将数据库字段中的值转换为模型属性时,您会发现一些常量:
TRUE_VALUES = [true, 1, '1', 't', 'T', 'true', 'TRUE', 'on', 'ON'].to_set
FALSE_VALUES = [false, 0, '0', 'f', 'F', 'false', 'FALSE', 'off', 'OFF'].to_set
# convert something to a boolean
def value_to_boolean(value)
if value.is_a?(String) && value.blank?
nil
else
TRUE_VALUES.include?(value)
end
end
Run Code Online (Sandbox Code Playgroud)