有些数据库支持boolean 列类型,而有些不支持。这使得Active Record 很难抽象化
boolean。例如,如果基础数据库没有boolean 类型,一些开发者使用char(1)列包含”t”
或”f”来表示true 或false。而其它开发者使用整数列,0 是false,1 是true。即使数据
库直接支持boolean 类型(如MySQL 和它的bool 列类型),它们也只是在内部存储0 或1。
问题在Ruby 中数字0 和字符”f”两者在条件句中被解释为true 值。[Ruby 有个true 的简
单定义。不是nil 或常量false 的所有值都是true。]这意味着如果你直接使用列的值,你
的代码在你认为它是false 的时候,将其解释列为true.。
# DON'T DO THIS
user = Users.find_by_name("Dave")
if user.superuser
grant_privileges
end
要在一个条件句内查询一个列,你必须附加一个问号给列的名字。(译注:在Ruby 中称
这为?句。)
# INSTEAD, DO THIS
user = Users.find_by_name("Dave")
if user.superuser?
grant_privileges
end
这种形式的存取器查看列的值。只有在数字零的情况下,它才被解释为fals;一个字符
串”0”,”f”,”false”,或者””(空字符串);nil;或者常量false。否则它被解释
为true。
如果你用先前的schema 或者不是英语的数据库工作,在先前段落中定义的true,可能
会不可靠。这些情况下,你可以覆写内置predicate 方法的定义。例如,在Dutch 语言中,
字段可能包含J 或N(Ja 或Nee)。在这个例子,你可以写:
class User < ActiveRecord::Base
def superuser?
self.superuser == 'J'
end
# . . .
end
分享到:
相关推荐
解决这个问题的一种方法是确保在XML配置文件中,boolean属性值用双引号包裹,如: ```xml ``` 或者,如果是在Action类的配置中: ```xml ``` 此外,还有一种可能是Action类的setter方法不匹配。对于boolean...
1 个boolean 属性on 指定开关机,默 认值false;1 个double 属性radius 指定风扇扇叶大小;1 个String 属性color 指定扇叶颜色, 默认值为blue。方法包括这些属性的访问器、构造函数、重写Object 类的toString()和...
4、bean类boolean属性(Boolean无此要求),前面三个字母需要小写,否则 无法读存BEAN值。 5、bean里面的属性如何仍然是bean,则可以递归解析拼装。 使用举例: 1、根据类生成XML配置文件模板 String beanClass2xml ...
这样的约定是为了让代码更易读,因为"get"和"set"清晰地表明了方法的作用,而"is"前缀对于boolean属性则暗示了返回的是一个布尔值,表示属性的状态。 然而,当boolean属性名以"is"开头时,可能会引发问题。在某些...
1 个boolean属性 on 指定开关机,默 认值false ;1 个double 属性 radius 指定风扇扇叶大小;1 个String 属性 color指定扇叶颜色, 默认值为 blue 。方法包括这些属性的访问器、构造函数、重写 Object 类的 toString...
这一章包含了 JavaScript 的核心对象 Array,Boolean,Date,Function,Math,Number,Object 和 String。这些对象同时在客户端和服务器端的 JavaScript 中使用。 Array 属性 方法 Boolean 属性 方法 Date 属性 方法...
if(text2.attr(“disabled”)==false){ //通过设置disabled的boolean属性将第三个text输入框disabled属性置为true text2.attr(“disabled”,true); }else{ //通过将第三个text输入框disabled属性置为false来移除...
本书已经更新于 JavaScript 1.2 的新特性,其它包括了 JavaScript 支持层和样式单的属性和对象。要获得关于这些主题的详细信息,请参看 Netscape Communicator 中的动态 HTML。 目录 此参考中包含的内容 此参考...
2. **boolean属性**:对于boolean类型的属性,getter方法通常命名为`isXXX`,setter方法为`setXXX`。 3. **属性访问权限**:属性通常是私有的(private),以保护数据安全。 4. **方法访问权限**:所有提供给外界...
- 特殊情况下,boolean属性可以用isXxx()替代getXxx()。 6. **JavaBean的属性类型**: - Simple属性:单一属性,通过getter和setter进行访问。 - Index属性:数组类型的属性,提供设置和获取整个数组以及单个...
当你使用-DskipTests=true(或简单地-DskipTests,因为Maven的Boolean属性默认为true)时,Maven会跳过测试执行阶段,但还是会编译测试代码并生成测试报告(通常是一个空的报告)。这意味着测试类会被编译,但不会...
- 对于boolean属性,可以使用`is`开头的getter方法,如`isDone()`。 4. **JavaBean的开发**: - 开发JavaBean可以使用Sun Microsystems提供的Bean开发工具包(BDK),或其他第三方工具,如JavaPlan、Java Studio、...
HTML5还引入了boolean属性,如`disabled`和`readonly`,只需写出属性名即可表示属性值为true,无需赋值。 HTML5的一个核心目标是增强浏览器间的兼容性,因此它重新定义了语法,以便在不同浏览器中都能得到一致的...
例如,当字段为 int 类型,而实体类属性为 boolean 时,可通过自定义 TypeHandler 进行适配。自定义过程包括: - (1) 创建实体类,将数据库中的 int 字段映射为 boolean 属性。 - (2) 设计数据库表结构,确保字段...
对于Java Bean中的boolean属性,访问器方法应命名为`isXXXX`,例如`isDone`。 **2.1.4 控制结构与大括号** `if`、`else`、`while`、`for`等语句必须使用大括号 `{}` 将代码块包裹,即使只有一行代码,以增加代码的...
- **类属性**:遵循Java的驼峰式命名,Boolean属性建议以`is`或`has`开头。 - **成员变量**:通常以`m`开头,后面接功能描述和变量类型,控件属性则以控件名+功能描述命名。 - **方法名**:以小写字母开头,动词...
3. **EL表达式与boolean属性**:在使用EL表达式处理`boolean`属性时,由于JavaBean规范,通常需要使用`get`开头的方法,如`getXXX()`,而不是`isXX()`。 4. **日期处理**:获取日期的下一天,可以通过创建`Calendar...
4. 私有属性(`private`),并提供对应的getter和setter方法,对于boolean属性,可使用`isXxx()`方法。 创建一个标准JavaBean的基本步骤: 1. 定义JavaBean类,声明公共类和包名。 2. 编写无参构造函数,用于对象...