And*_*rew 7 activerecord named-scope ruby-on-rails default-scope ruby-on-rails-3
我有一种情况,现有应用程序的行为正在发生变化,这让我头疼.
我的应用有照片.照片有一个状态:"batch", "queue", or "complete".应用中的所有现有照片都是"完整的".
99%的时间我只需要显示完整的照片,而在所有现有的代码库中,我需要每次调用照片仅限于完整的照片.
但是,在与上传和分类照片相关的屏幕中,我需要能够相当轻松地覆盖默认范围以显示批量或排队的照片.
像许多其他人一样,我需要找到一种在某些情况下轻松覆盖默认范围的方法.我看着这些问题(1,2),他们似乎并没有回答我要找的.
我希望的代码是这样的:
class Photo < ActiveRecord::Base
...
default_scope where(:status=>'complete')
scope :batch, unscoped.where(:status=>'batch')
scope :queue, unscoped.where(:status=>'queue')
...
end
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.我尝试在lambdas中包装范围方法,但这也不起作用.
我知道default_scope带有行李,但是如果我不能使用覆盖,那么我正在寻找添加scope :complete ...并且必须梳理我现有应用程序中每次调用照片并添加.complete以过滤未处理的照片.
你会如何解决这个问题?
| 归档时间: |
|
| 查看次数: |
11256 次 |
| 最近记录: |