2010-11-30 73 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獲取聯繫人。

其餘的編碼你必須自己做,我不認爲有任何寶石可用於此。