在我的网站上,版主可以标记垃圾评论.标记这些注释后,它们会被隔离,因此它们不再出现在常规视图中,但仍可在管理控制面板中看到它们.目前,我将它们排除在常规视图之外:
@comments = Comment.where(:flagged => false)
Run Code Online (Sandbox Code Playgroud)
我在每个有注释的控制器中执行此操作,其中有许多注释.我觉得在Rails中有一个更清晰的方法来处理这个问题.也许在评论模型中的某处我可以指定在查询注释时,只检索那些未标记的注释.如果是这样,那怎么办?即使这是不可能的,还有其他方法来干这个代码吗?
你可以使用默认范围
default_scope where(:flagged => false)
Run Code Online (Sandbox Code Playgroud)
请参阅http://apidock.com/rails/ActiveRecord/Base/default_scope/class
使用unscoped可以忽略默认范围.请参阅http://apidock.com/rails/ActiveRecord/Base/unscoped/class
我更喜欢使用范围而不是默认范围,因为我不需要在需要所有记录时覆盖它.取决于获取所有/未标记记录的频率.
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |