ActiveRecord: сделать так, чтобы все текстовые поля вызывались полосой перед сохранением, если не указано иное

Я сталкивался с различными проблемами на разных сайтах на протяжении многих лет, когда пользователи помещали пробелы в начало / конец строковых и текстовых полей. Иногда они вызывают проблемы с форматированием / разметкой, иногда они вызывают проблемы с поиском (например, порядок поиска выглядит неправильно, хотя на самом деле это не так), иногда они действительно приводят к сбою приложения.

Я подумал, что это будет полезно, а не вставлять куча обратных вызовов before_save, как я делал в прошлом, чтобы добавить некоторые функции в ActiveRecord для автоматического вызова .strip для любых строковых / текстовых полей перед сохранением, если я не скажу этого не делать, например, с помощью do_not_strip: field_x,: field_y или что-то подобное в верхней части определения класса.

Прежде чем я пойду и выясню, как это сделать, кто-нибудь видел более хорошее решение? Чтобы внести ясность, я уже знаю, что могу сделать это:

before_save :strip_text_fields

def strip_text_fields
  self.field_x.strip!
  self.field_y.strip!
end

, но я ищу способ получше.

Ура, макс

5
задан Michael Durrant 14 November 2011 в 04:56
поделиться