Отправка приглашений проекта в Rails - PullRequest
5 голосов
/ 30 ноября 2010

Привет всем, я ищу способ добавить стратегию приглашения в мое приложение Rails. Я использую Devise для аутентификации, и мне нравится devise_invitable , но, насколько я могу судить, этот гем позволяет только приглашать новых пользователей в систему.

В моем приложении пользователь имеет возможность приглашать других пользователей (используя электронную почту) присоединиться к своему текущему проекту. Если этот адрес электронной почты существует, пользователь добавляется; Если адрес не существует, я хотел бы отправить приглашение на конкретный проект на этот адрес электронной почты. Если у пользователя уже есть учетная запись, он может войти в систему и привязать свою учетную запись к этому проекту. Если нет, она может создать новую учетную запись.

У кого-нибудь есть советы, где искать такую ​​систему?

Ответы [ 2 ]

8 голосов
/ 04 марта 2011
# app/models/invite.rb
class Invitation < ActiveRecord::Base
  validates_uniqueness_of :email, :scope => :project_id
  belongs_to :project
  has_many :users
  after_save :email_invite_if_no_user

  private
    def email_invite_if_no_user
      unless User.find_by_email(email)
        UserMailer.send_invite(self).deliver
      end
    end
end

# config/routes.rb
resources :projects do
  resources :invites
end

# app/controllers/invites_controller.rb
class InvitesController < ActionController
  before_filter :get_project

  def new
    # render invite form
  end

  def create
    @invite = Invite.new(params[:invite])
    @invite.project_id = @project.id
    if @invite.save
      flash[:message] = "Successfully invited #{params[:invite][:email]}"
      redirect_to @project
    else
      flash[:error] = "Could not invite #{params[:invite][:email]}"
      render :new
    end
  end

  private
    def get_project
      @project = Project.find(params[:project_id])
    end 
end
0 голосов
/ 10 августа 2011

Я реализовал функциональность аналогичной линии в моем приложении. Просто дам краткое описание

В моем приложении есть функция отслеживания подписки, и пользователь может приглашать своих контактов из gmail, Yahoo и Facebook, а также вводить электронные письма в текстовом поле.

Если адрес электронной почты действителен - без флажка для отправки приглашения (недействительное сообщение электронной почты перед этим письмом)
Если адрес электронной почты действителен, и ни один пользователь уже не зарегистрирован с использованием этого - установите флажок, чтобы пригласить
Если адрес электронной почты действительный и зарегистрированный пользователь - показать, нажмите кнопку отписаться

Я использовал гем контактов для получения контактов из Gmail и Yahoo.

Остальную часть кодирования вы должны сделать сами, я не думаю, что для этого есть какой-либо драгоценный камень.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...