2010-04-19 84 views
1

我已經實施了Authlogic。我相信這不是一個authlogic特定的quesetion。假設我有一個用戶模型,並且每個用戶在數據庫中都有一個名爲「login」的列。Rails Authlogic阻止用戶更改其登錄名/用戶名

在創建用戶時,會填充登錄列。但是,我不希望用戶在設置後能夠更改其登錄名。

目前,我已經在用戶的視圖中的_form.html.erb文件中刪除了文本字段。但是,它可能仍然可以通過url訪問權限?

我該如何做到這一點,一旦設置了登錄名,根本無法更改?

回答

4

據我所知,Authlogic爲你處理這種情況,所以你不必擔心有人覆蓋他們的用戶名。爲了處理這種類型的情況,您可以將用戶名設置爲受保護的屬性,方法是將其從模型中的attr_accessible屬性中排除,並直接在UserController的創建操作中進行分配,該操作將繞過單個案例中的質量分配保護你在哪裏想要設置它。例如:

class User < ActiveRecord::Base 
    attr_accessible :email, :password, :other_field1, :other_field2 # note username is not listed 
end 

class UserController < AppController 
    def create 
    @user = User.new(params[:user]) 
    @user.username = params[:user][:username] 
    @user.save 
    # ... 
    end 
end 
+0

啊這是一個完美的解釋。無論出於何種原因,authlogic不會對登錄進行鎖定(至少對我來說不是這樣,也許我設置錯了或者最近他們改變了它?)。但是,這很好。 – jim 2010-04-19 22:15:13