我有几个模型belong_to :status。
状态是:
- 积极的
- 隐
- 禁止
我为每个状态设置了范围,它们适用于用户和其他几个内容模型,但让我们举个User例子。
出于习惯,我写User.find(15)or User.allor or User.last(5)or@category.users
我认为不应该有任何理由改变这一点。事实上,称我为自私,但我不想改变这一点。我觉得我应该能够在更高的层次上处理这类任务,并且避免一遍又一遍地重新输入:
User.active.where(...)User.activeUser.active.last(5)@category.users.active
这似乎不合常规。不幸的是,这些模型在许多情况下都使用,所以我想要一种方法,也许在模型级别,预先筛选被禁止或隐藏的模型。例如,从all范围中删除被禁止的实例,以及“last”之类的范围或一般查询模型时。或者,如果专门调用了属于禁止或隐藏范围的实例,它会引发一条未找到的记录。我仍然希望能够通过它们各自的作用域(例如User.bannedor User.hidden)访问这些实例,但我宁愿那是额外的输入,而不是最常用的查询。