首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >活动记录:布尔接受值,为什么'y‘和'yes’不能?

活动记录:布尔接受值,为什么'y‘和'yes’不能?
EN

Stack Overflow用户
提问于 2014-04-16 04:09:56
回答 2查看 304关注 0票数 0

我有一个使用rails 4.1的rails模型,其中一个字段是布尔类型。我想用'y‘或’是‘来改变布尔值,但它不起作用。它只允许“t”,“on”,true。我的数据库是postrgresql

代码语言:javascript
运行
复制
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"

有人知道原因吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-16 07:14:36

当Rails需要将数据库字段的值键入模型属性时,您将在ActiveRecord::ConnectionAdapters::Column中找到一些常量:

代码语言:javascript
运行
复制
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
票数 5
EN

Stack Overflow用户

发布于 2014-04-16 05:49:34

您可以在Model方法中检查它&相应地将它保存为DB。

就像。

代码语言:javascript
运行
复制
class MyEntity < ActiveRecord::Base
  def active
     return false unless active=='y'|| active == 'yes'
     true
  end
end

以上方法将返回True或false.You可以从此方法保存数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23098814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档