У меня есть модель DocumentType
с атрибутом extensions
. В моей форме я разрешаю людям вставлять эти расширения в форму.serialize & before_save in Rails 4
Я хочу, чтобы иметь возможность анализировать этот вход перед сохранением, удаляя любые недопустимые параметры, преобразовывать их в массив и иметь Rails-сериализацию.
У меня есть следующий код, но я просто в конечном итоге ж/входа, который пользователь дал в форме вместо массива:
class DocumentType < ActiveRecord::Base
serialize :extensions
before_save :process_extensions
def process_extensions
self.extensions = [*self.extensions.gsub(/[^a-z ]+/i, '').split(' ')].uniq
end
end
Вы пытались иметь свойство psuedo для ввода строки, которое устанавливает массив, а не объединяет оба в одно свойство? –
У меня нет. Я хотел избежать этого, если это возможно, или, по крайней мере, понять, почему я не получаю ожидаемых результатов. –
Протестировал ваш код с помощью Ruby 1.9.3p392, Rails 4.0.0, с Postgres. Код просто работает. Я установил расширения для «abc1 def abc! Def» и после чтения получил [«abc», «def»]. –