Rails:如何进行动态关联

时间:2012-06-18 12:37:21

标签: ruby-on-rails activerecord associations polymorphic-associations

我将用一个例子来解释我想要实现的行为。

如果您有一个项目管理应用程序并且您添加了一项任务,但并非所有贡献者都是该应用程序的用户。 因此,当您向任务添加贡献者时,您可以输入用户名或电子邮件地址。

这是我发现有点棘手的部分。 task模型有许多贡献者通过user模型链接,但从这一点开始,我想实现两件事。

  1. 存储非会员电子邮件(这显然非常简单)

  2. 如果该电子邮件地址是创建帐户,则会将该用户链接到该任务并删除暂时保存的电子邮件。

  3. 这样,当该用户创建帐户时,所有相关任务都已与其电子邮件相关联。

    这是我可以用多态关联实现的吗?或者还有什么我应该看的东西?

1 个答案:

答案 0 :(得分:1)

涉及多态关联的部分很多tasks有很多contributors

有很多方法可以实现您想要的其他功能。

我可能会通过创建新的contributor记录来存储临时电子邮件地址,而不使用其他字段,例如password。当用户实际注册时,我会使用first_or_create方法来完成用户帐户的设置。

这消除了存储临时电子邮件和转移任务所有权的需要。用于在id注册前将contributortask相关联的{{1}}与注册后使用的相同{{1}}。