2017-07-16 34 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

你有一些用户表中的角色作为管理员? – Pavan

+0

不,我不知道。我选择了创建两个用户模型的路径,一个是管理员,另一个是用户,所以我没有任何指示任何用户角色的数据库表列。 – yamaoka

+0

这些模型之间有任何关联吗? – Pavan

回答

1

如果你设置了设计一种管理模式正常,你应该能够过滤器之前添加到您的控制器操作是这样的:before_action: authenticate_admin! 你也应该有机会获得其他帮助像admin_signed_in?

相关问题