2011-05-21 37 views
1

我只是想知道:我如何使屬性「寫一次」? 更確切地說,我使用的是Devise,我希望用戶能夠使用此電子郵件進行註冊,但一旦完成,我希望此電子郵件被鎖定。Rails模型:如何在創建屬性後對其進行保護?

我讀過表格可以很容易地繞過,所以我想確保我的模型做到這一點。

另外,我用我的窗體的一個:<%= f.email_field :email, :id => "email", :disabled => "disabled" %>

是否有任何風險,一個用戶可以註冊後修改自己的電子郵件?

感謝您的回答!

回答

3

attr_readonly允許在創建時設置一個值,然後阻止在更新時對其進行修改。

class MyModel < ActiveRecord::Base 

    attr_readonly :email 

end 
+0

如果我這樣做,用戶不能創建他的帳戶。我需要能夠寫入一次,然後將其寫入只讀。像'after_create',改變它的屬性... – Lucas 2011-05-21 19:12:03

+0

我讀過你的更新。似乎Devise不喜歡我將電子郵件改爲'attr_readonly'在註冊頁面上,我收到錯誤「電子郵件不能爲空」。 – Lucas 2011-05-21 19:15:47

+0

無論如何,似乎我的問題是一個不同的問題。感謝您的幫助,我會先查詢一下關於我與Devise的錯誤的另一個問題。 – Lucas 2011-05-21 19:23:47

相關問題