首页 > 解决方案 > 在跟踪变量 n 的方法中创建循环

问题描述

我正在尝试从数据库中删除用户及其电子邮件,而不是完全删除用户,我选择软删除用户,覆盖他们的用户名和电子邮件,以防他们将来再次注册。用户不能有重复的电子邮件,所以我每次都必须用唯一的电子邮件覆盖。

软删除和覆盖帐户的用户名和电子邮件的方法如下所示:

def soft_delete
  n = 1
  y = n + 1
  update_attribute(:name, ("DeletedUser"))
  update_attribute(:email, ("DeletedUserEmail"+(y.to_s)))
  update_attribute(:deleted_at, Time.current)
end

它仅适用于删除其帐户的第一个用户。第二个用户收到电子邮件已经存在的错误。

我尝试了不同的实现方式,以便y保持变量的计数,n随着用户的增加而增加。

我将如何以最好的方式解决这个问题?我考虑过做一个for循环。我也浏览了这个,发现:

(0..5).each do |i|
  puts "Value of local variable is #{i}"
end

但不确定这是否是实现此功能的最佳方式。

标签: ruby-on-railsrubyloops

解决方案


您已经有一个唯一的计数器……记录的 id。

update_attribute(:email, ("DeletedUserEmail"+(id.to_s)))

推荐阅读