我在用户模型中创建了一个阅读器方法
def name
self[:name]
end
我很难理解自己[:name]
看起来我正在使用Hash中的键访问一个值,但是我可以告诉它不是哈希。
我也尝试在ruby中创建类来模拟这个但是不能让它们工作所以我不确定这是ruby还是rails我不理解的东西。
答案 0 :(得分:4)
ActiveRecord提供[]
method:
<强>
[](attr_name)
强>
在经过类型转换后返回由attr_name
标识的属性的值...
所以说self[:name]
只是一种访问模型的name
属性的全面方法。
[]
和Ruby中的任何其他方法一样,您可以在任何类中定义自己的方法:
class C
def [](k)
# do whatever you want
end
end
c = C.new
c[:pancakes]
ActiveRecord与数据一起使用,或多或少是由关系数据库支持的Hash,所以说model[:attribute_name]
是相当自然的。因此存在[]
方法。