我有一个“主题”模型,里面有一个名为“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 值,但我不知道如何修复它。你能帮我弄清楚还是有其他方法可以达到同样的要求?谢谢~