Rails 5: разработайте приглашаемое добавление пользовательских полей - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь добавить devise invitable в мое новое приложение.Я нашел много информации в Интернете, но, похоже, нет пути к решению.

Итак, следующие проблемы:

  1. Когда пользователь приглашает кого-то, учетная запись создается, в то время как стандартный шаблон электронной почты, созданный devise, говорит: «Ваша учетная запись не будет создана ...»

  2. Когда пользователь нажимает активациюссылку он перенаправляет на страницу редактирования, но когда они отправляют свою информацию, мои столбцы: полное имя,: term_of_service не сохраняются.

Возможно, я что-то упустил.

Это мой invitations_controller

class InvitationsController < Devise::InvitationsController

  def new
    super
  end

  def create
    User.invite!(invite_params, current_user)
      redirect_to dashboard_path
  end

  def update
    user = User.accept_invitation!(accept_invitation_params)
  end

  def edit
  end

  private

  def invite_params
    params.require(:user).permit(:email, :ivitation_token, :provider, :skip_invitation)
  end

  def accept_invitation_params
    params.permit(:password, :password_confirmation, :invitation_token, :fullname, :terms_of_service)
  end
end

Мой вывод консоли:

Processing by InvitationsController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"/PoYvD7be0xpE1yBGI2EsojBU62o8d+Kcx0B8LgZ7DJkrqz2lCGs1YrA8d5ziwOAVH68u+1ij7ZacecVmNfaUQ==", "user"=>{"invitation_token"=>"4a24a37282a3881a4d595f251ea4deca4d0c25cbb966d50d8d622941a55c1a4c", "fullname"=>"Arnas Klasauskas", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "terms_of_service"=>"1"}, "commit"=>"Einladen"}
Unpermitted parameters: :utf8, :_method, :authenticity_token, :user, :commit
No template found for InvitationsController#update, rendering head :no_content

Мой application_controller

  before_action :configure_permitted_parameters, if: :devise_controller?

    def configure_permitted_parameters
        devise_parameter_sanitizer.permit(:accept_invitation, keys: [:email, :fullname, :terms_of_service])
    end

1 Ответ

0 голосов
/ 26 января 2019

Итак, если вы хотите добавить пользовательские параметры, вы можете просто добавить эту строку в ваш метод обновления

User.accept_invitation!(update_resource_params)

Теперь вам нужно добавить метод update_resource_params в invitations_controller с вашими пользовательскими полями:

def update_resource_params
  params.require(:user).permit(:password, :password_confirmation, :invitation_token, :fullname, :terms_of_service)
end
...