2014-09-06 3 views
3

У меня есть следующие настройки:Rails 4 + DEViSE - Самовольная параметры при обновлении учетной записи пользователя

routes.rb

devise_for :users, :path_names => { :controllers => {:omniauth_callbacks => "omniauth_callbacks", :registrations => "registrations"} 

и RegistrationController:

class RegistrationsController < Devise::RegistrationsController 

    def update 
    ... 
    end 

    def user_params 
    params.require(:user).permit(:tw_account, :fb_account, :current_password, :password, :password_confirmation) 
    end 
end 

Но каждый раз, когда Я пытаюсь обновить данные пользователей, я получаю это сообщение об ошибке:

Самовольная параметры: tw_account, fb_account

Но когда я создать новую учетную запись с этими двумя полями, они сохраняются. Как сделать их обновляемыми?

Спасибо

+0

Вы должны посмотреть эту тему http://stackoverflow.com/questions/16379554/strong-parameters-with-rails-4-0-and-devise Эта тема должна вам помочь. –

ответ

4

Вы можете, вероятно, хотите, чтобы пойти с

class ApplicationController < ActionController::Base 
    before_action :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:tw_account, :fb_account, :current_password, :password, :password_confirmation) } 
    end 
end 
+0

К сожалению, такая же ошибка. – user984621

+1

Это странно, это должно было сделать трюк –

8

Это работает для меня, наследуйте Завещание :: RegistrationsController

class RegistrationsController < Devise::RegistrationsController 

    before_filter :configure_permitted_parameters 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:account_update).push(:tw_account, :fb_account) 
    end 

end 

Вы должны также удалить current_password, password_confirmation и пароль из параметров, потому что их уже обработали.

+0

Спасибо. Меня устраивает. Но в чем разница: 'devise_parameter_sanitizer.for (: sign_up) {| u | u.permit (: tw_account,: fb_account)} ' Почему это не работает ... – Hegwin

+0

У кого-нибудь есть ссылка на то, где это отображается в документах? Он плохо документирован – k26dr

Смежные вопросы