重新定义:全部

ssc*_*rus 4 scope ruby-on-rails ruby-on-rails-3

我的系统中有用户可以选择"休眠",此时他们可以完全从系统中删除自己和所有相关记录.我在我的网站上查询了在User表及其相关表中的搜索(由多达5个中间表分隔),并且没有明确测试用户是否正在休眠.

有没有办法将用户设置重新定义为非休眠用户,所以我当前的所有查询都可以在不单独更改的情况下工作?

我怎样才能最优雅地完成我想要做的事情?

Jes*_*ott 6

这通常使用默认范围完成.阅读所有关于他们

来自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`
Run Code Online (Sandbox Code Playgroud)