在Rails中发送项目邀请函
问题描述:
嘿,我正在寻找一种方法将邀请策略添加到我的Rails应用程序中。我使用Devise进行身份验证,并且看起来像devise_invitable,但据我所知,该gem只允许您邀请新用户加入系统。在Rails中发送项目邀请函
在我的应用程序中,用户可以邀请其他用户(使用电子邮件)加入他当前的项目。如果该电子邮件地址存在,则添加该用户;如果地址不存在,我想向该电子邮件地址发送特定于项目的邀请。如果用户已经有一个帐户,她可以登录并将她的帐户绑定到该项目。如果没有,她可以创建一个新帐户。
有没有人有什么建议在哪里寻找这样的系统?
答
# 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
答
我在我的应用程序的类似行上实现了功能。将只是简要说明
在我的应用程序中,我们有跟进取消关注功能,用户可以邀请他的联系人从Gmail,雅虎和脸书,并通过在文本区域输入电子邮件。
如果电子邮件有效 - 没有复选框,将邀请发送(该电子邮件前面无效的电子邮件消息)
如果电子邮件有效,并且没有用户使用已经注册的 - 显示复选框邀请
如果电子邮件有效,并已注册的用户 - 显示关注取消关注按钮
我使用contacts gem从gmail和yahoo获取联系人。
其余的编码你必须自己做,我不认为有任何宝石可用于此。
绝对是一个很好的起点?你将如何处理邀请接受部分? 检查每次登录时是否有同一封电子邮件的邀请?或每个页面刷新? – pastullo 2014-04-28 21:35:40