Я уверен, что это тривиально, но последние несколько часов я бился головой о стол.Я пытаюсь преобразовать строку (то есть "key1, key2 :) в массив (т.е. [" key1 "," key2 "]) перед сохранением ее в базе данных. Я использую обратный вызов before_validation в моей модели, и этопохоже, не запускается.
Моя модель выглядит следующим образом:
class Product < ActiveRecord::Base
serialize :keywords, Array
attr_accessible :keywords
before_validation :update_keywords
def update_keywords
self.update_attributes(:keywords, self.keywords.split(',').collect(&:strip)
end
end
Я получаю ошибку SerializationTypeMismatch. Очевидно, что метод update_keywords не запущен или не запущеннеправильно возвращаю обновленные атрибуты.
Есть идеи?
РЕДАКТИРОВАТЬ
Я использую Rails 3.0.3, если это что-то меняет.
РЕДАКТИРОВАТЬ # 2
Просто хотел продолжить и сказать, что я обнаружил, что удаление объявления типа сериализованных столбцов и обеспечение его по умолчанию пустого массива (то есть []), ачем nil устраняет многие проблемы.
Ради тех, кто, как я, только начинает свой путь с Rails, я должен отметить, что это, скорее всего, , а не лучший способ создания сериализованных атрибутов.Я просто портирую на проект, который тыПоворачивает старую базу данных.