2013-03-03 35 views
0

看來我被困在這裏的一個簡單點 - 我有一個名爲「用戶名」的模型被稱爲「用戶名」,它被設置爲唯一。用戶名在創建後應該是不可編輯的

讓我們假設我的網站上有一個新訪問者,想要註冊,必須選擇一個用戶名,然後點擊「註冊」。在這種情況下,我的字段「用戶名」必須是attr_accessible。

我現在想要完成的是當用戶編輯他/她的帳戶時,「用戶名」字段不再可編輯。

我該如何認識到這一點?

BOUNS-噶:我使用的是與慘慘遺贈這樣一個解決方案,與管理員角色的用戶可以更改特定用戶的用戶名應該supernice!我的頭腦告訴我一些事情,「除非user.admin?」但是我的編碼打破時間太長了。

反正 - 我希望會有一些答案:)

回答

5

創建上更新定義驗證:

class User 
    attr_accessor :admin_action # do not put in attr_accessible 

    validate :freeze_username, :on => :update 

    protected 

    def freeze_username 
    errors.add(:username, "cannot be changed") if self.username_changed? unless self.admin? || self.admin_action 
    end 
end 

admin_action的是,你可以從控制器如果管理員設置爲true虛擬屬性正在進行更新。

+0

太棒了,像魅力一樣工作!我欠你一個人情 ;-) – 2013-03-03 06:37:10

相關問題