Rails удаляет зависимые записи в пользовательском методе удаления - PullRequest
0 голосов
/ 01 июня 2018

В данный момент я пытаюсь запустить метод "soft_delete", который я использовал, когда пользователь удаляет свою учетную запись.Вместо того, чтобы полностью удалить пользователя из базы данных, он перезаписывает его имя пользователя и адрес электронной почты.Тем не менее, я хочу, чтобы метод удалял все посты, сделанные пользователем.

Я пробовал несколько разных способов.Это контроллер на данный момент.

class User < ApplicationRecord
    has_many :posts, :dependent => :delete_all

   #Method to soft delete and overwrite Username and Email for accounts
      def soft_delete
      Post.where(:user_id => user.id).delete_all
      update_attribute(:name, "DeletedUser")
      update_attribute(:email, "DeletedUserEmail#{id}")
      update_attribute(:deleted_at, Time.current)
    end
   end

Но теперь я получаю сообщение об ошибке:

  undefined local variable or method `user' for #<User:0x00007fc9a42d48d8> Did you mean? User! User?

1 Ответ

0 голосов
/ 01 июня 2018

В сообщении об ошибке указано «неопределенная локальная переменная user».В нем также должно быть указано, из какой строки произошла ошибка (которой вы здесь не поделились), но предположительно это строка:

Post.where(:user_id => user.id).delete_all

В классе User не определен метод user,Вы только пытаетесь получить id из self - то есть вы можете просто написать:

Post.where(:user_id => id).delete_all

Однако это также не обязательно.Поскольку каждый пользователь has_many :posts, вы можете просто написать:

posts.delete_all
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...