2014-02-13 71 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% –