0

読み取り専用属性を持つクラスがあります。

class User < ActiveRecord::Base
  attr_readonly :key
  validates_uniqueness_of :key
end

オブジェクトの作成時に属性を自動生成し、:key作成後に属性を変更できないようにしたいと考えています。私はこれを試しました:

class User < ActiveRecord::Base
  attr_readonly :key
  validates_uniqueness_of :key

  before_create :generate_key

  private
    def generate_key
      self.key = Digest::MD5.hexdigest(Time.now.to_s + rand(100000).to_s)[0..5]
    end
end

そして、保護された属性を割り当てようとしているので、予想通りエラーになります。これを行う適切な方法は何ですか?

4

2 に答える 2