2017-07-16 5 views
0

Ich baue gerade eine Bildungs-App und ich habe ein Admin-Modell und ein Benutzermodell.Wie verwenden Sie Devise-Hilfsmethoden, sodass bestimmte Controller-Aktionen auf einen bestimmten Benutzer beschränkt sind?

Ich möchte nur einen Administrator Zugriff auf Links haben, die zum Erstellen, Bearbeiten und Löschen von Anfragen führen.

Ich verwende derzeit eine <% if user_signed_in? %>, damit nur angemeldete Benutzer auf den Link zugreifen können. Da ich jedoch eine Administratorrolle hinzugefügt habe, möchte ich nur, dass der Administrator auf die Links zugreifen kann.

Ich habe nichts anderes zu meinem Admin oder User Controller gemacht, nur die notwendigen Modelle und Controller generiert.

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

Haben Sie einige haben Rolle in der Benutzertabelle als Admin? – Pavan

+0

Nein, tue ich nicht. Ich habe den Pfad zum Erstellen von zwei Benutzermodellen gewählt, von denen eines ein Administrator und das andere ein Benutzer ist. Daher habe ich keine Spalten in der Datenbanktabelle, die auf Benutzerrollen hinweisen. – yamaoka

+0

Haben Sie irgendwelche Assoziationen zwischen diesen Modellen? – Pavan

Antwort

1

Wenn Sie devise für Admin-Modell ordnungsgemäß eingerichtet sollten Sie in der Lage sein, bevor Filter hinzuzufügen, dies zu Ihren Controller-Aktionen wie: before_action: authenticate_admin! Sie sollten auch Zugang zu anderen Helfern haben wie admin_signed_in?

Verwandte Themen