2010-04-19 86 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