2010-11-30 81 views
5

嘿,我正在寻找一种方法将邀请策略添加到我的Rails应用程序中。我使用Devise进行身份验证,并且看起来像devise_invitable,但据我所知,该gem只允许您邀请新用户加入系统。在Rails中发送项目邀请函

在我的应用程序中,用户可以邀请其他用户(使用电子邮件)加入他当前的项目。如果该电子邮件地址存在,则添加该用户;如果地址不存在,我想向该电子邮件地址发送特定于项目的邀请。如果用户已经有一个帐户,她可以登录并将她的帐户绑定到该项目。如果没有,她可以创建一个新帐户。

有没有人有什么建议在哪里寻找这样的系统?

回答

9
# 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

绝对是一个很好的起点?你将如何处理邀请接受部分? 检查每次登录时是否有同一封电子邮件的邀请?或每个页面刷新? – pastullo 2014-04-28 21:35:40

0

我在我的应用程序的类似行上实现了功能。将只是简要说明

在我的应用程序中,我们有跟进取消关注功能,用户可以邀请他的联系人从Gmail,雅虎和脸书,并通过在文本区域输入电子邮件。

如果电子邮件有效 - 没有复选框,将邀请发送(该电子邮件前面无效的电子邮件消息)
如果电子邮件有效,并且没有用户使用已经注册的 - 显示复选框邀请
如果电子邮件有效,并已注册的用户 - 显示关注取消关注按钮

我使用contacts gem从gmail和yahoo获取联系人。

其余的编码你必须自己做,我不认为有任何宝石可用于此。