我目前正在使用 Rails 3 + 设计。我通过将 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 之类的操作时,该范围不起作用。仍然返回了带有已软删除的 user_id 记录的 Group_members。
关于如何优雅地处理删除应用程序中的 soft_deleted 用户的建议?
谢谢