2013-09-11 1 views
0

Я создаю модуль в своем приложении rails для «добавления членов команды» в проект. И им, используя devise_invitable.Devise запрашивает подтверждение перед принятием приглашения

В этом случае я добавить новый адрес электронной почты и подтверждение почта и invitaion почта, отправляемая ... как это имеет смысл

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

Мой текущий код выглядит следующим образом:

def create_team_members 
     # find the case 
     @case = Case.find_by_id(params[:id]) 
     # TODO:: Will change this when add new cse functionality is done 

     params[:invitation][:email].split(',').map(&:strip).each do |email| 
     # create an invitation 
     @invitation = Invitation.new(email: "#{email}".gsub(/\s+/, ''), role: params[:invitation][:role].rstrip, case_id: @case.id, user_type_id: params[:invitation][:user_type_id]) 

     if @invitation.save 
      # For existing users fire the mail from user mailer 
      if User.find_by_email(email).present? 
      UserMailer.invite_member_instruction(@invitation).deliver 
      @invitation.update_attributes(invited_by: current_user.id) 

      else 
      # For new users use devise invitable 
      user = User.invite!(email: "#{email}", name: "#{email}".split('@').first.lstrip) 
      user.skip_confirmation! 
      user.save 
      @invitation.update_attributes(invitation_token: user.invitation_token, invited_by: current_user.id) 
      end 
     end 
     end 
     redirect_to dashboard_path 
    end 

Я не знаю, что я делаю неправильно ...

Пожалуйста, помогите ... спасибо.

+0

Просто взглянув на код, трудно сказать. Как выглядит параметр params [: приглашение] [: email]? – daLizard

ответ

3

Работает, мы можем преодолевать devise_invitable в Пользовательской модели. В настоящее время ваша модель пользователь смотрит то, что некоторые, как этот

class User < ActiveRecord::Base 
    devise :confirmable, :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :invitable 
    # Rest of the code 
end 

Метод send_confirmation_instructions из завещанию несет ответственность отправки почты подтверждение. путем переопределения его мы можем остановить подтверждение. Отправка электронной почты и подтверждение пользователю в тот же момент.

Изменить его к этому

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :invitable 

    # Overriding devise send_confirmation_instructions 
    def send_confirmation_instructions 
    super 
    self.confirmation_token = nil # clear's the confirmation_token 
    self.confirmed_at = Time.now.utC# confirm's the user 
    self.save 
    end 

    # Rest of the code 
end 

Теперь почта не будет отправлено.