0
我正在使用devise
和cancancan
和rails_admin
。在登錄admin
模型時,出現以下錯誤。使用rails g devise Admin
設計'未經允許的參數:電子郵件'無法登錄管理員
我試圖重寫控制器和這裏由devise
產生
Unpermitted parameter: email
admin
模型是我admin/registrations_conroller.rb
class Admin::RegistrationsController < Devise::RegistrationsController
before_action :configure_devise_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:account_update).push(:email)
if params[:action] == 'update'
devise_parameter_sanitizer.permit(:account_update) {
|u| u.permit(registration_params << :current_password)
}
elsif params[:action] == 'create'
devise_parameter_sanitizer.permit(:sign_up) {
|u| u.permit(registration_params)
}
end
end
# def new
# super
# end
# def create
# super
# end
end
這裏是我的admin
模型
class Admin < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :email, presence: true
end
我ability.rb
class Ability
include CanCan::Ability
def initialize(admin)
admin ||= Admin.new # guest user (not logged in)
if admin.position? :superadmin
can :manage, :all
else
can :read
end
end
end
我config/initializers/rails_admin.rb
RailsAdmin.config do |config|
## == Devise ==
config.authenticate_with do
warden.authenticate! scope: :admin
end
config.current_user_method(&:current_admin)
## == Cancan ==
config.authorize_with :cancan
config.actions do
dashboard # mandatory
index # mandatory
new
export
bulk_delete
show
edit
delete
show_in_app
## With an audit adapter, you can add:
# history_index
# history_show
end
end
最後我admins
表
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.string "position"
end
我試圖做的是有在admins
表中的列position
其中指定管理員的類型,即superadmin
,moderator
等
仍無法登錄。這裏的調試器說什麼 ---紅寶石/哈希與 - 高德:ActionController的::參數 元素: UTF8: 「✓」 authenticity_token:9lfnKwkGdiBBUi72F + EJB + 3um31IO8v9epWG76193Gy5FVU/36S26I8V8YyCjzGW/RkT4LmisAYLUcfBkAsiSw == 管理:紅寶石/哈希與 - 高德:ActionController的::參數 元素: 郵箱:[email protected] 密碼:密碼 remember_me: '0' 高德: :@permitted:假 提交:登錄 控制器:設計/ sessions action:創建 ivars: :@permitted:false 和控制檯說'未經許可的參數:電子郵件' – Ritwick
好吧,我會檢查這個 – Sunny