2016-12-18 15 views
0

gemを使用せずにrails adminを作成しようとしています。Rails admin from scratch

私は管理者ログインと名前空間を持っています。私の質問は、たとえば、私は管理者と外部の管理者のユーザーモデルで区別することができます。

ユーザーモデルにアクションがあるコントローラがあると想像してください。私はadminのために同じ行動を使用したいと思います。しかし、私は別のコントローラを作成する必要がありますか、同じものを使うべきですか?

答えて

3

これにはさまざまな方法があります。あなたのプロジェクトとその複雑さによって異なります。

rails generate migration AddAdminToUsers admin:boolean 
    rails db:migrate 

とあなたのDBのユーザーテーブルから管理者ユーザに真を割り当てるには:最も簡単な解決策は次のように、あなたのUserモデルで何かを管理列を追加することになります。たとえば、DBの最初のユーザー。レールコンソールで:

rails c 
user = User.first # The console will load first user 
user.admin = 1  # It will return true 
user.save   # It will save and assign true to admin user 

次に、あなただけのapplication_controller.rbにシンプルなロジックを作成して、あなたのビューからメソッドis_admin?を呼び出す必要があります。追加する役割のように、ユーザーテーブルから管理テーブルを差別、他の方法はたくさんあります

helper_method :current_user, :signed_in?, :is_admin? 

    def current_user 
    @current_user ||= User.find(session[:user_id]) if session[:user_id] 
    end 

    def signed_in? 
    !!current_user 
    end 

    def is_admin? 
    signed_in? ? current_user.admin : false 
    end 

:(session[:user_id] = user.idをすでにセッションハッシュにユーザーのIDを格納している場合)。管理者とユーザーの表を区別するように選択する場合は、管理者コントローラと管理者のモデルも必要です。私はあなたに開始のアイデアを贈ってほしい。