С помощью устройства пригласить. Как создать пользователя только после того, как пользователь установил свой пароль

def create
    if User.invite!(user_params)
        flash[:success] = t('flashes.users.create_success')
    else
        flash[:error] = t('flashes.users.create_error')
    end
    redirect_to company_path(id: company.slug)
end

User.invite! создаст пользователя, затем отправит приглашение для установки пароля. Я хочу, чтобы он только отправлял приглашение для установки пароля, а затем сохранял его только в том случае, если пользователь установил пароль.

1 ответ

Решение

Я бы не стал связываться с такой привлекательной реализацией.

Скорее, возможно, добавьте столбец статуса для пользователя, используя перечисления, чтобы вы могли изолировать пользователей, которые не приняли их приглашения, и, как сказал один из комментаторов, позже удалите устаревших пользователей.

enum status: {invited: 0, accepted: 1}

тогда вы можете сделать следующее:

User.invite!(status: "invited")

вам нужно будет установить "принятый" статус, когда пользователь принимает, подключившись к обратным вызовам, которые предоставляет гем (см. https://github.com/scambra/devise_invitable).

Другие вопросы по тегам