2014-02-13 49 views
0

我有一个网站,每个用户都可以登录并拥有自己的控制面板。希望我这样做的人希望每个用户在现场有独立的部分进行注册。因此,在我的网站上,我将有“注册成为球员”和“注册成为教练”的链接,因为它适用于足球俱乐部。在Rails中注册不同的用户?

我该如何处理决定用户角色的参数传递?问题是我有四个角色(SuperAdmin,Admin,Coach,Player),所以信息有点敏感。我不希望有人可以将“userRole”设置为“Admin”并危及整个系统。

create_table "users", force: true do |t| 
    t.string "username" 
    t.string "userRole" 
    t.boolean "is_enabled" 
    t.string "firstName" 
    t.string "lastName" 
    t.string "password" 
end 

因此,我的目标是制定类似于那些他们有常规用户和部分人们可以注册为会员的网站。就像网站底部的“成为会员”链接一样。所以,人们可以正常注册并可以注册为会员。

最聪明的方法是什么?我需要确定哪些用户注册。我希望这不是让人困惑。

+0

如何您是否打算设置用户角色? –

+0

这是我最关心的问题。我无法做到这一点,因此它将作为一个参数显示出来,并且我有这两个用户可以注册的站点的不同部分(“注册为玩家”和“注册为教练”)。也许我应该在某处添加一些秘密角色并将其设置在控制器内? – user3304086

+0

您只需要有一个用户管理页面来设置注册之外的角色,但这需要手动设置。 –

回答

1

我会亲自创建一个单独的表称为roles,这将允许你存储想要尽可能多的不同的角色:

#app/models/role.rb 
Class Role < ActiveRecord::Base 
    has_many :users 
end 

#app/models/user.rb 
Class User < ActiveRecord::Base 
    belongs_to :role 

    before_create :set_role 

    private 
    def set_role 
     role = self.role_id 
     role = "0" unless defined?(role) # Default role 
    end 
end 

roles 
id | name | created_at | updated_at 

users 
id | username | role_id | first_name | last_name | password | created_at | updated_at 

这将允许你在创建用户设定的“角色”:

#app/controllers/users_controller.rb 
def create 
    @user = User.new(user_params) 
    @user.save 
    #see user model for before_create method 
end 

这意味着你可以保存自定义的角色,如果你想:

#app/views/users/new.html.erb 
<%= form_for @user do |f| %> 
    <%= f.hidden :role_id, "2" %> 
<% end %> 
+1

谢谢。我想那就是我一直在寻找的!我今天会试试! – user3304086

+0

没问题 - 希望它有帮助!可能需要使用Strong Params才能使其工作100% –