На моем сайте модераторы могут помечать спам-комментарии. Когда эти комментарии помечены, они попадают в карантин, поэтому они больше не отображаются в обычных представлениях, хотя их все еще можно увидеть в панели управления. На данный момент, я исключить их из обычных взглядов, как так:Rails 3: Исключая результаты по умолчанию
@comments = Comment.where(:flagged => false)
Я делаю это в каждом контроллере, который имеет комментарии в нем, из которых есть много. У меня такое ощущение, что в Rails есть более чистый способ справиться с этим. Возможно, где-то в модели комментариев я могу указать, что при запросе комментариев вы получаете только те, которые не помечены. Если да, то как это делается? И даже если это невозможно, есть ли другой способ высушить этот код?
Это правильная идея, но ваш код неверен. Это должно быть просто: 'default_scope где (: flagged => false)'. Откуда вы взяли 'unflagged'? – Mischa
В этом случае существует 4 вида, которые будут использовать область по умолчанию и 1 вид, который исключил бы его. Похоже, что дефолт - это более эффективный подход, если только я не знаю. – nullnullnull
u r справа. Я отредактировал свой ответ. –