Переопределение: все - PullRequest
       1

Переопределение: все

4 голосов
/ 18 октября 2010

В моей системе есть пользователи, которые могут выбрать «спящий режим», после чего они могут полностью удалить себя и все связанные с ними записи из системы. У меня есть запросы по всему сайту, которые выполняют поиск в таблице User и связанных с ней таблицах (разделенных целыми 5 промежуточными таблицами), и ни один из них явно не проверяет, находится ли пользователь в спящем режиме или нет.

Есть ли способ переопределить пользовательский набор только для не спящих пользователей, поэтому все мои текущие запросы будут работать без индивидуального изменения?

Как мне наиболее элегантно выполнить то, что я пытаюсь сделать?

1 Ответ

6 голосов
/ 18 октября 2010

Обычно это делается с областями по умолчанию. Читать все о них

Код с сайта Райана:

class User < ActiveRecord::Base
  default_scope :hibernate => false
end

# get all non-hibernating users
@users = User.all

# get all users, not just non-hibernating (break out of default scope)
@users = User.with_exclusive_scope { find(:all) }  #=> "SELECT * FROM `users`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...