我有一个微博模型,我希望默认情况下每个查询都会附带where approved = true
和order by creat_at desc
。
现在这段代码不起作用
class Micropost < ActiveRecord::Base
...
default_scope { where(approved: true), order('microposts.created_at DESC')}
end
另外我想知道如何绕过它?例如,如果我是管理员,并且我在未批准的视图中,我希望能够看到未经批准的帖子。
答案 0 :(得分:1)
您的default_scope
应为:
default_scope { where(approved: true).order(created_at: :desc) }
要绕过默认范围,您可以使用unscoped
。
要查看unapproved
帖子,您可以执行以下操作:
Micropost.unscoped.all.where(approved: false)