目前正在构建一个教育应用程序,我有一个管理模型和一个用户模型。
我只是希望管理员能够访问导致创建,编辑和删除请求的链接。
我目前正在使用<% 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 :(得分:1)
如果您正确设置了管理模型的设计,您应该能够在过滤器之前添加到您的控制器操作,如下所示:before_action: authenticate_admin!
您还应该可以访问其他帮助程序,例如admin_signed_in?