У меня есть модель MongoMapper, и я пытаюсь преобразовать разделенную запятыми строку в массив для хранения.
Основная проблема заключается в том, что такая строка, как tags = "first,second,third"
, не преобразуется в массивв базе данных, как ["first","second","third"]
.Вместо этого он выглядит как ["first,second,third"]
.
. Также происходят и другие странные вещи: 1) В preen_tags я должен включить файл tags.после каждой строки 2) в preen_tags, используя отладчик tags
возвращает nil
Вот моя модель
class Template
include MongoMapper::Document
validate :validate_tags
after_validation :preen_tags
key :template_id, ObjectId
key :title, String
key :description, String
key :tags, Array
timestamps!
def validate_tags
errors.add_to_base "You Must Enter At Least 1 Tag." if tags.blank?
end
def preen_tags
#return if tags.nil? #why doesn't this work??
#only alphanumeric chars allowed, except hyphens and commas
tags = tags[0] if tags.is_a?(Array)
tags = tags.gsub(/[^0-9a-z\-\,]/i, '') unless tags.nil?
#convert spaces to hyphens
tags = tags.gsub(/\s/, '-') unless tags.nil?
tags = tags.split(",") unless tags.nil?
end
end