我在我的一个应用程序中使用devise invitable模块。我有一个报告功能,其中用户(即发送者)可以与其他用户(即接收者)以报告的形式共享他自己的详细信息。发件人需要在表单中输入接收者的电子邮件地址。我们在用户表中搜索接收者的记录,如果没有条目,我们使用设计invite feature为他/她创建记录,并在share_information表中更新共享详细信息的关联。接收方收到一封电子邮件,其中包含设置其密码的链接。如果接收者使用该链接设置他/她的密码并声明他/她的帐户,一切都很好。但是,如果用户不使用该链接设置密码并尝试注册,则会出现问题。在这种情况下,该用户的早期记录将被删除,并使用新的用户ID生成新记录。当share_information与先前的user_id关联时,关联中断。如何解决问题,为什么设计会删除用户?我没有在设计宝石文档中找到有关此类事件的信息。我没有添加代码,因为我认为这不是代码问题。虽然我可以添加它,如果有人需要推荐。任何帮助或建议表示赞赏:)
答案 0 :(得分:0)
我认为,设计用户以某种方式工作。如果用户被邀请并且他没有声明该帐户但是尝试注册,则设计只删除以前的用户并创建新记录。从某种角度来看也是有道理的。无论如何我必须解决问题,以便使用黑色密码生成受邀用户。我在记录中插入了一个设计友好的令牌密码,然后设计不会删除用户。它会发出用户已经存在的通知。
user = User.invite!({:email => user[:email], :first_name => user[:first_name], :last_name => user[:last_name], :phone_number => user[:phone]}, current_user)
user.password = Devise.friendly_token[0,20]
user.save!