:group_members-6ren">
gpt4 book ai didi

ruby-on-rails - Ruby on Rails : Devise: How to add "invite user to belong to model"?

转载 作者:行者123 更新时间:2023-12-04 06:14:59 29 4
gpt4 key购买 nike

我有一个 Group具有许多成员的模型( User 模型)。

class Group < ActiveRecord::Base
belongs_to :owner, :class_name => 'User'
has_many :members, :through => :group_members, :class_name => 'User'
end
User模型正在使用设计。我需要为用户(组所有者)添加“邀请”另一个用户(可能有也可能没有用户记录)加入组的能力。我该怎么做呢?像这样的东西已经被构建并打包为 Gem 了吗?

最佳答案

好吧,第一个 Action 是找到用户,然后将他添加到他所在的组中。如果他不存在,请执行一些操作,例如通过电子邮件发送邀请并将该邀请放入一个单独的表中,该表也属于该组。
然后,如果具有相同电子邮件地址的人注册,则将新用户直接放入该组。总共:添加一个名为“invited_user”的新模型,它只有一个电子邮件地址行并且属于组模型。

class InvitedUser < ActiveRecord:Base
belongs_to :group
end

创建一个像这样的邀请操作:
def invite_user
user = User.find_by_email(params[:email])
group = Group.find(params[:id])
if user
group.users << user
else
send_invite user.email
group.invited_users << user
end
end

最后,您需要继承 Devise 的注册 Controller ,以便您可以在成功注册后覆盖/添加到默认操作。但是,这部分可能不可靠,因为我部分依赖于 Devise 的文档并且没有自己尝试过:
class RegistrationsController < Devise::RegistrationsController

protected

def def after_sign_up_path_for(resource)
invited_user = InvitedUser.find_by_email(resource.email)
if invited_user
invited_user.group.users << resource
invited_user.destroy
end
after_sign_in_path_for(resource)
end
end

或类似的东西。当然,你仍然需要实现 send_invite Action

关于ruby-on-rails - Ruby on Rails : Devise: How to add "invite user to belong to model"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7373737/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com