У меня есть несколько моделей, которые belong_to :status
.Запрет на модель
Статусы являются:
- Активных
- Hidden
- Banned
У меня есть области, установленные для каждого из статусов, и они применяются к пользователям и ряд других содержательным моделей, но давайте возьмем, например, User
.
по привычке, я пишу User.find(15)
или User.all
или User.last(5)
или @category.users
Я не думаю, что должен быть какой-либо причине, чтобы изменить это. На самом деле, назовите меня эгоистичным, но я не хочу хочу, чтобы изменить это. Я чувствую, что я должен быть в состоянии справиться с такого рода задачи на более высоком уровне, и избежать необходимости перепечатывать снова и снова:
User.active.where(...)
User.active
User.active.last(5)
@category.users.active
Это просто кажется нетрадиционным. К сожалению, эти модели используются во многих случаях, поэтому мне хотелось бы, возможно, на уровне модели предустановить для запрещенных или скрытых моделей. Например, удаление запрещенных экземпляров из области all
, но также и области действия, такие как «последний» или когда запрашивается модель в целом. Или, если экземпляр вызван специально, который падает с запрещенной или скрытой областью, он поднимает запись, которая не найдена. Я все равно хотел бы иметь доступ к этим экземплярам через их отдельные области (например, User.banned
или User.hidden
), но я предпочел бы , что будет дополнительной типизацией, а не наиболее часто используемыми запросами.
Вау спасибо! Мне, возможно, придется попробовать это завтра, когда жена сломает свой ноутбук и заставила мою машину смотреть Netflix. –
Красивые, спасибо большое! –
Быстрое примечание: использование соединения сделало модель только для чтения, поэтому я просто использовал 'where (: status_id => 1)' Это был 'default_scope', который спас мне жизнь, спасибо –