我有一類具有隻讀屬性:導軌 - 汽車只能生成讀取屬性上創建
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
而且可預測性會導致錯誤,因爲我試圖分配受保護的屬性。什麼是適當的方式來做到這一點?
你可以嘗試'自[:鍵] = [...]'呢? – MrYoshiji
您可以嘗試執行'before_validation_on_create:generate_key'而不是'before_create:generate_key'。由於在創建之前檢查驗證(所以,在generate_key之前),它可能會導致一些麻煩。 –
它是你的完整模型定義?我發現http://stackoverflow.com/questions/11383061/rails-attr-readonly-doesnt-work,並想知道如果這是你的情況。 –