最近我一直苦恼一个问题,当我建立了一个 model 的时候,写了一个 api
然后我通过定义类
class Comic < ActiveRecord::Base
attr_accessible :name
def name self.name 或者写成 attributes['name'] end
def as_json(options={}) super(:methods => [:name]) end
end
疑问: 1.我有一个疑问,self 是当前的 class,self.name 和 attributes['name'] 的区别是什么?
我知道 attributes 这么访问属性是一个 hash
但是我比较纠结的是 每一个类 都是一个 hash 嚒?
2.而且我在 method name 中对 name 属性 进行 URI:escape() 时候,却发现,URI:escape(self.name) 报错,而 URI:escape(arrtibutes['name']) 却可以顺利进行。
3.attributes 就是 attributes_accessoror 包括 seter&geter 方法, 那 attributes 也算是一个 hash,所以他在拿类的属性时候,attributes['key'] 嚒? 那我能理解为,attributes['key'] 就是调用 getter 方法,就像 java 中的对象.get 方法得到值吗? self 表示当前的类,那为什么当我进行属性编码的时候,self.属性值 却不行,然而 attributes[‘属性值’]却可以?
我是个新手 我想问问 这块应该仔细的看哪里。