現在、Rails 3+Deviseを使用しています。Time.nowをUser.deleted_atに設定して、ユーザーをソフト削除しています。
これにより、ユーザーが削除されます。次に、application_controllerで、ソフト削除されたユーザーを削除するかどうかを確認します。
before_filter :no_deleted_users
def no_deleted_users
if current_user && current_user.deleted_at
flash[:alert] = "Access Denied"
return sign_out_and_redirect('/')
end
end
問題は、ソフト削除されたユーザーがまだ私のアプリ全体に表示されることです。私は次のようなモデルを持っています:
User (id, deleted_at)
GroupMember(id,user_id)
Comment(id,user_id)
soft_deletedユーザーがアプリに表示されないようにするにはどうすればよいですか?User.rbでこれを試してみました:
default_scope:conditions =>'users.deleted_at IS NULL'
しかし、group.group_membersのようなことをしたとき、そのスコープは効果がありませんでした。soft_deletedされたuser_idレコードを持つGroup_membersは引き続き返されました。
アプリでsoft_deletedユーザーの削除をエレガントに処理する方法に関する提案はありますか?
ありがとう