Rails删除自定义删除方法

时间:2018-06-01 09:04:11

标签: ruby-on-rails ruby postgresql

目前我正在尝试运行" 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 :(得分:2)

错误消息显示“未定义的局部变量user”。它还应该告诉你错误来自哪一行(你在这里没有分享),但这可能是这一行:

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

user类中没有定义User方法。您只是想获得id的{​​{1}} - 即您可以写:

self

然而,这也不是必需的。由于每个用户Post.where(:user_id => id).delete_all ,您只需编写:

has_many :posts