ActiveRecord:不能使用关键字令牌作为方法?

时间:2013-06-01 19:58:54

标签: ruby-on-rails activerecord

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]我会得到一个值。

为什么?

1 个答案:

答案 0 :(得分:0)

删除attr_reader :token
Rails(4.0之前)使用attr_accessible来允许通过哈希可写和可访问的属性 Rails 4.0使用strong parameters用于相同目的。

在删除attr_reader的{​​{1}}和attr_accessible时,您的属性将无法显式写入,但可以读取;这就是你想要的。