Как применить этот фильтр в Rails - PullRequest
1 голос
/ 04 августа 2010

У меня есть таблица с именем language, в которой есть столбец с именем lang_code.Имеет следующие значения.

id  lang_code  created_at           updated_at
1   ARA        2010-07-29 15:27:25  NULL
2   CHI        2010-07-29 15:27:25  NULL
3   DAN        2010-07-29 15:27:25  NULL
4   DEU        2010-07-29 15:27:25  NULL
5   ESP        2010-07-29 15:27:25  NULL
6   KOR        2010-07-29 15:27:25  NULL
7   VIE        2010-07-29 15:27:25  NULL

У меня есть требование удалить из этой таблицы 3 языка (CHI, DAN ad VIE).Я могу просто написать миграцию и навсегда удалить значения из таблицы.Но я не хочу этого делать.Вместо этого я хочу отфильтровать их на уровне модели, чтобы в любой операции, которую я выполняю для этой конкретной модели, не было этих трех языков.Как это сделать в Rails?

Спасибо

Ответы [ 2 ]

3 голосов
/ 04 августа 2010

Использование default_scope :

class Language < ActiveRecord::Base
  UNWANTED_LANGUAGES = ["CHI", "DAN", "VIE"]
  default_scope :conditions => ["lang_code not in (?)", UNWANTED_LANGUAGES]
  ...
end
0 голосов
/ 04 августа 2010
  1. Вы создаете миграцию, в которую добавляете: активный столбец. Вы устанавливаете значение по умолчанию (EG по умолчанию активно)

  2. В той же миграции (будьте осторожны при вызове Language.reset_column_information) или в другой миграции вы заботитесь о любых связях БД с (CHI, DAN, VIE). Затем вы их инактивируете (неактивно = true)

  3. В классе Language вы используете default_scope:

    default_scope: condition => {: active => true}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...