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 我的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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |