我有一个使用rails 4.1的rails模型,其中一个字段是布尔类型。我想用'y‘或’是‘来改变布尔值,但它不起作用。它只允许“t”,“on”,true。我的数据库是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"有人知道原因吗?
发布于 2014-04-16 07:14:36
当Rails需要将数据库字段的值键入模型属性时,您将在ActiveRecord::ConnectionAdapters::Column中找到一些常量:
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发布于 2014-04-16 05:49:34
您可以在Model方法中检查它&相应地将它保存为DB。
就像。
class MyEntity < ActiveRecord::Base
  def active
     return false unless active=='y'|| active == 'yes'
     true
  end
end以上方法将返回True或false.You可以从此方法保存数据。
https://stackoverflow.com/questions/23098814
复制相似问题