Rails开发中的杂项与路由机制详解
1. Active Record杂项
1.1 单位转换访问器方法
在处理数据时,有时需要进行单位转换。例如,将腕尺(cubits)转换为英寸(inches),可定义如下访问器方法:
class ProductData < ActiveRecord::Base
CUBITS_TO_INCHES = 18
def length
read_attribute("length") * CUBITS_TO_INCHES
end
def length=(inches)
write_attribute("length", Float(inches) / CUBITS_TO_INCHES)
end
end
1.2 对象标识
模型对象重新定义了Ruby的 id() 和 hash() 方法,以引用模型的主键。这意味着具有有效ID的模型对象可以用作哈希键,但未保存的模型对象不能可靠地用作哈希键,因为它们还没有有效的ID。
两个模型对象在使用 == 比较时,如果它们是同一类的实例且具有相同的主键,则被认为是相等的。这意味着未保存的模型对象即使具有不同的属性数据,也可能被比较为相等。如果需要比较未保存的模型对象,可能需要重写 == 方法。
1.3 使用原始连接
可以使用底层的Active Record连接适配器执行SQL语句
超级会员免费看
订阅专栏 解锁全文
35

被折叠的 条评论
为什么被折叠?



