2014-02-03 2 views
-1

В настоящее время у меня есть ActionMailer для отправки электронной почты, когда пользователь регистрируется. Затем я генерирую случайное: sign_in_token с пользователем, чтобы пользователь мог активировать свою учетную запись. Когда пользователь активирует свою учетную запись по электронной почте, пользователи: registration_complete boolean имеют значение true.Удалить незарегистрированных пользователей через неделю

Как я могу удалить пользователей, сохраненных в базе данных через неделю после их создания, если они не активировали свою учетную запись?

Это мое текущее решение. Но я не уверен, что это лучший способ сделать это.

Я получаю сообщение об ошибке,

NoMethodError (undefined method `-' for :created_at:Symbol): 

ПОЛЬЗОВАТЕЛЯ МОДЕЛЬ

after_create :delete_unregistered_users 

def delete_unregistered_users 
    User.where("created_at <= ?", :created_at - 1.week && :registration_complete == false).each do |user| 
    user.destroy 
    end 
end 
+2

: created_at является символом, что его Валу е ..? –

+0

Если вы получили сообщение об ошибке, вы можете поспорить, что это не лучший способ сделать это. –

ответ

1

попробовать это

def delete_unregistered_users 
    User.where("created_at <= ? AND registration_complete = ?", Time.zone.now - 1.week,false).destroy_all 
end 
+0

по какой-либо причине это удалило каждого пользователя в базе данных lol –

+1

отредактировано ... оно будет работать – abhas

2
def delete_unregistered_users 
    User.where("created_at <= ? AND registration_complete = ?", Time.zone.now - 1.week,false).each do |user| 
    user.destroy 
    end 
end 
+0

Что случилось с этим подходом ..? –

+0

этот ': registration_complete == false' –

+0

получил его, исправил мою ошибку –

2
def delete_unregistered_users 
    User.where("created_at <= ? && registration_complete=?", '#{Time.zone.now - 1.week}',false).each do |user| 
    user.destroy 
    end 
end 
+0

еще @Monk_Code u ошибочно," # {Time.zone .now - 1.week} "правильно –

+0

всегда пытаюсь объяснить ваш код .. –

+0

Я получаю эту ошибку PGError: ERROR: недопустимый синтаксис ввода для типа timestamp:" # {Time.zone.now - 1.week} " LINE 1: ... LECT «пользователи». * FROM «users» WHERE (created_at <= '# {Time.zo ... –

Смежные вопросы