我的系统中的用户可以选择“休眠”,此时他们可以完全从系统中删除自己及其所有相关记录。我在我的网站上有查询在User表及其相关表中搜索(由多达5个中间表分隔),并且没有明确测试用户是否正在休眠。
有没有办法只将用户设置重新定义为非休眠用户,这样我所有当前的查询都可以正常运行而无需单独更改?
我怎样才能最优雅地完成我想要做的事情?
答案 0 :(得分:6)
这通常使用默认范围完成。阅读all about them
Ryan网站的代码:
class User < ActiveRecord::Base
default_scope :hibernate => false
end
# get all non-hibernating users
@users = User.all
# get all users, not just non-hibernating (break out of default scope)
@users = User.with_exclusive_scope { find(:all) } #=> "SELECT * FROM `users`