我将用一个例子来解释我想要实现的行为。
如果您有一个项目管理应用程序并且您添加了一项任务,但并非所有贡献者都是该应用程序的用户。 因此,当您向任务添加贡献者时,您可以输入用户名或电子邮件地址。
这是我发现有点棘手的部分。 task
模型有许多贡献者通过user
模型链接,但从这一点开始,我想实现两件事。
存储非会员电子邮件(这显然非常简单)
如果该电子邮件地址是创建帐户,则会将该用户链接到该任务并删除暂时保存的电子邮件。
这样,当该用户创建帐户时,所有相关任务都已与其电子邮件相关联。
这是我可以用多态关联实现的吗?或者还有什么我应该看的东西?
答案 0 :(得分:1)
涉及多态关联的部分很多tasks
有很多contributors
。
有很多方法可以实现您想要的其他功能。
我可能会通过创建新的contributor
记录来存储临时电子邮件地址,而不使用其他字段,例如password
。当用户实际注册时,我会使用first_or_create
方法来完成用户帐户的设置。
这消除了存储临时电子邮件和转移任务所有权的需要。用于在id
注册前将contributor
与task
相关联的{{1}}与注册后使用的相同{{1}}。