帐户激活后,通过电子邮件将用户连接到现有记录

时间:2019-01-22 22:27:06

标签: ruby-on-rails ruby devise

我的问题:用户拥有帐户但未登录即创建新订单后,该订单将不会通过所使用的电子邮件连接到该帐户。

但是,当用户没有帐户时,他们会使用example@example.com创建一个订单---,然后使用example@example.com进行注册,这些订单将连接并显示。

我希望这样,当用户已经有一个帐户,但是随后在未登录的情况下使用相同的电子邮件创建帐户的订单时,该订单将连接。

我的user.rb模型,可以建立连接:

    after_create :connect_orders

  def connect_orders
    Order.where(email: self.email).update_all(buyer_id: self.id)
  end

因此,当电子邮件相同时,它将连接。

我已针对已批准的devise用户帐户对此进行了测试,并使用相同的电子邮件创建了一个订单,然后该订单不会显示。就像一旦已经有一个帐户一样,该代码将无法使用。除非,代码是否不能像这样设置,我在哪里出错了?

1 个答案:

答案 0 :(得分:2)

您在df.to_csv('r1.csv', columns=['Comment', 'EndTimeLocalized', 'Id', 'StartTimeLocalized']) 模型中创建了after_create回调。这意味着连接订单的代码仅在创建用户后才运行。如果您创建订单并且匹配的用户已经存在,它将不会运行。

如果要在创建订单时自动将新订单连接到现有用户,则需要为User模型添加回调。可能会发生以下情况:

Order