Простой способ всегда сделать поле строчными в db - PullRequest
6 голосов
/ 11 ноября 2011

В настоящее время я делаю в модели следующее:

before_save :to_lower
before_create :to_lower

def to_lower
  self.name = self.name.downcase
end

Кажется мне довольно повторяющимся.

Ответы [ 4 ]

15 голосов
/ 11 ноября 2011

Вам не нужен before_create, если у вас уже есть before_save.

before_save { |user| user.name = user.name.downcase }
3 голосов
/ 11 ноября 2011

Обычно я рассматриваю такие случаи как:

def name= name
  super(name.try(:downcase))
end
1 голос
/ 14 ноября 2014
def name=(val)
  write_attribute(:name, val.downcase)
end
0 голосов
/ 11 ноября 2011

Почему ты это делаешь?Если он выполняет поиск без учета регистра, вы можете просто включить это в логику вашего запроса (на самом деле, я думаю, Rails уже делает это немного).Однако, если вы действительно хотите, чтобы данные нормализовались в БД в нижнем регистре (скажем, если вы имеете дело с хешами SHA1 или чем-то еще), то вы поступаете правильно.

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