目前我正在尝试运行" 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?
答案 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