Я работаю над приложением, которое использует Devise 3.2.Я пытаюсь получить некоторые дополнительные параметры при сохранении member
.Согласно документации, я должен быть в состоянии сделать это.
В моем application_controller.rb у меня есть это (Rails 3.2.22.5)
before_filter :configure_permitted_parameters, if: :devise_controller?
, а затем я пробую две версиидокументация говорит, что должно работать.
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << [:name, :site_id]
devise_parameter_sanitizer.for(:accept_invitation) << [:name, :site_id]
end
Но это не работает, говоря devise base sanitizer expects a Block
.Который, согласно документации, я должен быть в состоянии пройти, поэтому я пытаюсь это ...
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, :site_id, :email, :password, :password_confirmation) }
devise_parameter_sanitizer.for(:accept_invitation) { |u| u.permit(:name, :site_id, :invitation_token, :password, :password_confirmation) }
end
... и это дает мне ошибку
undefined method permit for # <ActiveSupport::HashWithIndifferentAccess:0x007fbf17e00b40>
Я думаю этопотому что все находится внутри параметра: member => {...}, но я не уверен в этом и не могу понять синтаксис, если он есть.Мне просто нужно сохранить член с атрибутом name
и site_id
.
Параметры выглядят следующим образом
{"utf8"=>"✓", "_method"=>"put", "authenticity_token"=>"d9pudkerHaJoP7H7N1vYzWs/SSX1WtRO+8lRD313xP0=", "member"=>{"invitation_token"=>"WLh98kdrFAnyVb879EDS", "name"=>"NAMEHERE", "password"=>"XXXXXXX", "password_confirmation"=>"XXXXXXX", "site_id"=>"XXXXXXXXXXXXX"}, "commit"=>"Set my password", "action"=>"update", "controller"=>"devise/invitations"}
Может кто-нибудь помочь мне заставить это работать?Спасибо!