Расширение ВСЕХ вызовов SQL ActiveRecord с дополнительными условиями - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть модель ActiveRecord и способ ее настройки, я никогда ничего не удаляю. Вместо этого у меня есть логический столбец, который имеет значение true, если запись удалена, и false в противном случае. Я выполняю несколько запросов .where по этой модели. Мне нужен удобный способ автоматического добавления условия ": Удалено => 0" ко всем моим вызовам .where, которые я выполняю, чтобы никогда не получать удаленные записи.

Моим первоначальным инстинктом было расширение метода «где» для ActiveRecord, но, похоже, метода «нет» нет.

Каков наилучший способ достижения вышеуказанной функциональности наиболее объектно-ориентированным способом?

Спасибо.

1 Ответ

3 голосов
/ 01 ноября 2011

Звучит так, как будто вы хотите установить default_scope:

Используйте этот макрос в вашей модели, чтобы установить область действия по умолчанию для всех операций в модели.

Так что-то вроде этого:

class M < ActiveRecord::Base
  default_scope where(:deleted => 0)
  #...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...