#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