2014-05-13 19 views
1

我的註冊工作正常,我有3個自定義字段:name, avatar, avatar_cache設計不保存已經在App Controller中已經過消毒的參數Rails 4

只有:name自定義字段在控制檯中給我一個: Unpermitted parameters: name

我已經在應用程序控制器中清除了強大的參數,並且avatar/avatar_cache正在保存正確。我錯過了什麼嗎?

def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, :avatar, :avatar_cache, :email, :password, :password_confirmation) } 
    end 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:name, :avatar, :avatar_cache, :email, :password, :current_password, :password_confirmation) } 
    end 
+0

你的應用程序獲得同樣的錯誤lication? –

+0

@KikeIsasiVelasco爲什麼你重新定義'configure_permitted_pa​​rameters',我看到兩個單獨的方法定義,一個消毒'sign_up'參數和其他'account_update'?或者這只是一個錯字嗎? –

+0

你的'用戶'有':name'屬性嗎?請在控制檯中檢查它 –

回答

2

目前,已重新定義了方法configure_permitted_parameters,這就是爲什麼紅寶石是採摘的最新方法定義,即對account_update其白名單屬性之一。所以,當你嘗試sign_up與自定義屬性name,您會收到

Unpermitted parameters: name警告

的,因爲覆蓋方法configure_permitted_parameters的,設計沒有關於應該被列入白名單的sign_up

自定義屬性的想法

configure_permitted_parameters方法應該是這樣的:

class ApplicationController < ActionController::Base 

    before_filter :configure_permitted_parameters, if: :devise_controller? 
    ## ... 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, :avatar, :avatar_cache, :email, :password, :password_confirmation) } 
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:name, :avatar, :avatar_cache, :email, :password, :current_password, :password_confirmation) } 
    end 
end 
+1

謝謝!這就是訣竅。沒有意識到這一點。新的鐵路....謝謝! – Gibson