加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 设计 – 自动删除在定义的时间段后尚未确认的

发布时间:2020-12-17 03:52:40 所属栏目:百科 来源:网络整理
导读:一切都在标题中,我希望能够删除一段时间后尚未确认的帐户. 我正在使用: Rails 3.0.5 设计1.3.4 我的Devise用户模型具有以下属性: devise :database_authenticatable,:confirmable,:registerable,:recoverable,:rememberable,:trackable,:validatable 还有
一切都在标题中,我希望能够删除一段时间后尚未确认的帐户.

我正在使用:

> Rails 3.0.5
>设计1.3.4

我的Devise用户模型具有以下属性:

devise :database_authenticatable,:confirmable,:registerable,:recoverable,:rememberable,:trackable,:validatable

还有我的db / schema.rb

create_table "users",:force => true do |t|
    t.string    "email",:default => "",:null => false
    t.string    "encrypted_password",:limit => 128,:null => false
    t.string    "reset_password_token"
    t.timestamp "reset_password_sent_at"
    t.timestamp "remember_created_at"
    t.integer   "sign_in_count",:default => 0
    t.timestamp "current_sign_in_at"
    t.timestamp "last_sign_in_at"
    t.string    "current_sign_in_ip"
    t.string    "last_sign_in_ip"
    t.timestamp "created_at"
    t.timestamp "updated_at"
    t.string    "confirmation_token"
    t.timestamp "confirmed_at"
    t.timestamp "confirmation_sent_at"
  end

小小的好处 – 在我的用户模型中,我指定了我的数据之间的关系,例如:

has_one  :user_content,:dependent => :destroy

我想确保其子项也被删除.

非常感谢任何可以提供帮助的人!

感谢jrdi,这是SQLite 3数据库的答案

desc "Delete all unconfirmed users after 7 days"
task :delete_unconfirmed_users => :environment do
  users = User.all(:conditions => 'confirmed_at is NULL AND confirmation_sent_at <= datetime('now','-7 days')')
  users.each do |user|
    user.destroy
  end
end

对于PostGRE(Heroku)

desc "Delete all unconfirmed users after 7 days"
task :postgre_delete_unconfirmed_users => :environment do
  users = User.all(:conditions => 'confirmed_at is NULL AND confirmation_sent_at <= current_date - integer '7' ')
  users.each do |user|
    user.destroy
  end
end

有关详细信息,请参阅他的回答
谢谢@很多他.

解决方法

例如,您可以使用守护程序cron运行rake任务.

在这个rake中,您可以获得所有未确认的用户(:confirmed_at为nil)并在发送确认电子邮件时获取:confirmation_sent_at

当您拥有符合especifications的用户时,应该正确删除user.destroy和all.

如果你需要这个rake任务的一个例子告诉我,我做你的第一个aproximation.

—编辑—

在lib / tasks中创建一个delete_unconfirmed_users.rake

desc "Delete all unconfirmed users after 7 days"
task :delete_unconfirmed_users => :environment do
  users = User.all(:conditions => 'confirmed_at is NULL AND confirmation_sent_at >= DATE_SUB(NOW(),INTERVAL 7 day)')
  users.each do |user|
    user.destroy
  end
end

运行rake delete_unconfirmed_users

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读