1

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

这是为什么?

4

1 回答 1

0

删除attr_reader :token
Rails(4.0 之前)用于attr_accessible允许可通过哈希写入和访问的属性。
Rails 4.0 使用强参数来达到同样的目的。

在同时删除attr_readerattr_accessiblefor:token时,您的属性将无法显式写入,但可以读取;这就是你想要的。

于 2013-06-01T20:24:16.753 回答