Ruby on rails开发从头来(四十)- ActiveRecord基础(Boolean属性) - 编程入门网
Ruby on rails开发从头来(四十)- ActiveRecord基础(Boolean属性)时间:2011-12-04 博客园 Cure一些数据库支持boolean类型,而另一些则不支持,这使得Active Record要抽象boolean类型变得困难。例如,如果数据库不支持boolean类型,有的开发者使用char(1)来替代,而内容使用“t”和“f”来表示true和false,而另外一些开发者使用integer类型,0是false,1是true。即使数据库支持boolean类型,在内部也许还是使用0和1来存储。 在Ruby里,在条件判断中,数字0和字符f都被认为是true值,这就意味着如果你直接使用属性的值,你的代码会被认为该列的值是true,而不是你认为的false,例如: # 不要这样使用 user = Users.find_by_name("Dave") if user.superuser grant_privileges end 当在查询条件中使用属性时,你必须在列名后添加一个问号: # 这样是正确的 user = Users.find_by_name("Dave") if user.superuser? grant_privileges end 当使用访问操作符来获取属性的值时,当值为数字0,或者字符“0”,“f”,“false”,或“”(空字符串),或nil,或一个常量false时,都被认为是false,否则,就会被认为是true。 如果你在一个遗留系统上或者非英语系统上开发,上面对true的定义也许会无法工作,在这种情况下,你可以override内建的谓词方法的定义,例如,荷兰语情况下,字段也许包含J或者N,这种情况下,你可以像下面这样: class User < ActiveRecord::Base def superuser? self.superuser == ''J'' end # . . . end |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |