内部に「utid」(一意のトピック ID) という属性を持つ「トピック」モデルがあります。トピックの作成時に utid に値を割り当てる必要があります。さらに、utid は一意で、値が与えられると読み取り専用でなければなりません。
次に例を示します。
class Topic < ActiveRecord::Base
attr_reader :utid
before_validation :gen_utid, on: :create
validates :utid, presence: true, uniqueness: true
private
def gen_utid
self.utid = RandomToken.genf(32)
end
end
ただし、新しいトピックを作成するときは常に例外が発生します。
ActiveRecord::RecordInvalid: Validation failed: Utid can't be blank
gen_utid の utid 値の割り当てに失敗しているようですが、修正方法がわかりません。それを理解するのを手伝ってもらえますか、それとも同じ要件を達成する他の方法はありますか? ありがとう〜