Подключение пользователей к существующим записям с помощью электронной почты ПОСЛЕ активации учетной записи - PullRequest
0 голосов
/ 23 января 2019

Моя проблема : если у пользователя есть учетная запись, но он создает новый заказ, но еще не вошел в систему, заказ не будет подключаться к учетной записи через используемый адрес электронной почты.

Но когда у пользователя нет учетной записи, он создает заказ с 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 голосов
/ 23 января 2019

Вы создали after_create обратный вызов в вашей User модели. Это означает, что код для подключения заказов запускается только после создания пользователя. Он не запустится, если вы создадите заказ, и соответствующий пользователь уже существует.

Если вы хотите автоматически подключать новые заказы к существующим пользователям при создании заказа, вам необходимо добавить обратный вызов для вашей модели Order. Может работать что-то вроде следующего:

# in app/model/order.rb
before_validation :connect_user

private
def connect_user
  self.buyer ||= User.find_by(email: self.email)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...