Ruby 1.9.3-p327,Rails 3.2.13
我有以下型号:
class ActivationToken < ActiveRecord::Base
before_save :create_token
attr_reader :token
private
def create_token
self.token = 'abc123'
end
end
当我创建一个新的ActivationToken记录并调用my_token.token
时,我得到nil
,但如果我引用的是哈希,my_token[:token]
我会得到一个值。
为什么?
答案 0 :(得分:0)
删除attr_reader :token
Rails(4.0之前)使用attr_accessible
来允许通过哈希可写和可访问的属性
Rails 4.0使用strong parameters用于相同目的。
在删除attr_reader
的{{1}}和attr_accessible
时,您的属性将无法显式写入,但可以读取;这就是你想要的。