Read & Write
Read
read_attribute 根据属性名,获取其值。
和 self[:x] 等价
read_attribute(:name)
# 等价于
self[:name]
# 等价于
self.name数据从 attributes 里获取,不同于直接 self.name 它获取的是真实数据。
如果字段用于存储图片信息,并且我们有默认图片,则没有图片时: self.image 返回的是默认图片信息, 而 self[:image] 返回 nil 这才是真实信息, 这和 self.attributes 里的 image 信息一致。
那为什么不用 attributes[:name] 而用 read_attribute[:name] ? 因为性能,前者要把所有的属性都找出来,然后取 name 属性; 而后者可以直接获取 name 属性。
Write
属性名,加后缀 = 进行赋值。
区别于 attr_writer, 这里的写和数据库操作有关。
最后更新于
这有帮助吗?