翻译《应用Rails进行敏捷Web开发(第四版)》(二)
?
?大部分情况下Rails可以正确处理这些复数形式,但也有时你会不经意发现一些错误。比如可能你会遇到这种情况,你可以通过修改config/initializers/inflections.rb文件,让Rails理解英语的用法习惯情况
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?SQL类型和Ruby类型的映射?
Rails将没有小数位的Decimal转换成Fixnum对象,否则,转换成BigDecimal对象,为了确保不失精度。至于Boolean的情况,由于不是所有的数据库都有boolean类型,为了防止像Mysql,0被当作false处理,1是true。不幸的是,Ruby把所有非false或nil都当作true处理,所以直接使用该值会出问题。通常我们在列名后加上问号
?这里查看book的属性,只有isbn和title,却不见id。当你要设置主键,还要使用id。其他时间,使用实际的列名。Model重定义了Ruby的id和hash方法来引用model的主键。这意味着有合法id的model对象可以当作hash的key来使用。也说明,没有保存的model对象不能作为hash的key(因为没有合法id)如果两个model对象是同样的类型,并且主键值相等,则Rails认为他们相同(==)。即没有被持久化的model对象即使有不同的属性数据,也被看作是相同。所以,如果你发先你在比较未被持久化的对象则需要覆盖==方法。
?