Расширение ВСЕХ вызовов ActiveRecord SQL дополнительными условиями

#ruby-on-rails #ruby-on-rails-3 #activerecord

#ruby-on-rails #ruby-on-rails-3 #activerecord

Вопрос:

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

Моим первоначальным побуждением было расширить метод ‘where’ для ActiveRecord, но, похоже, метода where не существует.

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

Спасибо.

Ответ №1:

Похоже, вы хотите установить default_scope :

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

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

 class M < ActiveRecord::Base
  default_scope where(:deleted => 0)
  #...
end