2016-06-08 91 views
0

我正在使用devisecancancanrails_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其中指定管理員的類型,即superadminmoderator

回答

0

你應該直接與我們聯繫/ registrations_conroller.rb

class Admin::RegistrationsController < Devise::RegistrationsController 
    private 

    def sign_up_params 
    params.require(:user).permit(:email, :password, :password_confirmation) 
    end 

    def account_update_params 
    params.require(:user).permit(:email, :password, :password_confirmation, :current_password) 
    end 
    end 
+0

仍無法登錄。這裏的調試器說什麼 ---紅寶石/哈希與 - 高德:ActionController的::參數 元素: UTF8: 「✓」 authenticity_token:9lfnKwkGdiBBUi72F + EJB + 3um31IO8v9epWG76193Gy5FVU/36S26I8V8YyCjzGW/RkT4LmisAYLUcfBkAsiSw == 管理:紅寶石/哈希與 - 高德:ActionController的::參數 元素: 郵箱:[email protected] 密碼:密碼 remember_me: '0' 高德: :@permitted:假 提交:登錄 控制器:設計/ sessions action:創建 ivars: :@permitted:false 和控制檯說'未經許可的參數:電子郵件' – Ritwick

+0

好吧,我會檢查這個 – Sunny