2017-07-16 20 views
0

現在、教育アプリケーションを構築しており、私は管理者モデルとユーザーモデルを持っています。特定のコントローラアクションが特定のユーザーに限定されるように、Deviseヘルパーメソッドをどのように使用しますか?

私は管理者に、要求の作成、編集、削除につながるリンクへのアクセス権を与えたいだけです。

私は現在、ログインしたユーザーだけがリンクにアクセスできるようにするために<% if user_signed_in? %>を使用していますが、管理者ロールを追加したので、管理者はリンクにアクセスできます。

私は管理者またはユーザーコントローラに何もしていないので、必要なモデルとコントローラを生成しました。

ActiveRecord::Schema.define(version: 20170714091732) do 

    create_table "admins", force: :cascade do |t| 
    t.string "email", default: "", null: false 
    t.string "encrypted_password", default: "", null: false 
    t.string "reset_password_token" 
    t.datetime "reset_password_sent_at" 
    t.datetime "remember_created_at" 
    t.integer "sign_in_count", default: 0, null: false 
    t.datetime "current_sign_in_at" 
    t.datetime "last_sign_in_at" 
    t.string "current_sign_in_ip" 
    t.string "last_sign_in_ip" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.index ["email"], name: "index_admins_on_email", unique: true 
    t.index ["reset_password_token"], name: "index_admins_on_reset_password_token", unique: true 
    end 

    create_table "courses", force: :cascade do |t| 
    t.string "title" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

    create_table "lessons", force: :cascade do |t| 
    t.string "title" 
    t.text "content" 
    t.integer "course_id" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

    create_table "users", force: :cascade do |t| 
    t.string "email", default: "", null: false 
    t.string "encrypted_password", default: "", null: false 
    t.string "reset_password_token" 
    t.datetime "reset_password_sent_at" 
    t.datetime "remember_created_at" 
    t.integer "sign_in_count", default: 0, null: false 
    t.datetime "current_sign_in_at" 
    t.datetime "last_sign_in_at" 
    t.string "current_sign_in_ip" 
    t.string "last_sign_in_ip" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.index ["email"], name: "index_users_on_email", unique: true 
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true 
    end 

end 
+0

admin_signed_in?のような他のヘルパーへのアクセス権を持っている必要があります管理者としてのユーザーテーブルの役割 – Pavan

+0

いいえ、私はしません。私は2つのユーザーモデルを作成する道を選びました.1つは管理者、もう1つはユーザーなので、ユーザー役割を示すデータベース表の列はありません。 – yamaoka

+0

これらのモデル間に関連がありますか? – Pavan

答えて

1

あなたが管理モデルのための工夫を設定した場合、正しくあなたはこのようなあなたのコントローラのアクションにフィルタの前に追加することができるはずです:before_action: authenticate_admin!は また、あなたはいくつかを持っていますか

関連する問題