简单的问题。目前,对于Post
模型,这是我对默认范围的设置
default_scope :order => 'posts.created_at ASC'
我如何才能将其扩展为:draft => false
另外,如何让非默认范围返回:draft => true
?
谢谢!
答案 0 :(得分:3)
在这种情况下,请勿使用default_scope。使用这些常规范围:
scope :drafts, where(:draft => true)
scope :published, where(:draft => false)
如果你真的想使用default_scope
(我不建议这样做,因为它限制了你并让你以后必须绕过它),你可以这样做:
default_scope order('posts.created_at').where(:draft => false)
并稍后获得草稿:
@drafts = Post.unscoped.where(:draft => true)
但是,再次,如果你正在使用default_scope
,这意味着你希望它始终使用这些条件,并且使用unscoped
你基本上告诉ActiveRecord不要做你明确告诉的事情它来。对我来说,这是一个黑客攻击。