MongoMapperモデルがあり、カンマ区切りの文字列を保存する配列に変換しようとしています。
主な問題は、などの文字列がtags = "first,second,third"
データベース内ののような配列に変換されないこと["first","second","third"]
です。代わりに、として入り["first,second,third"]
ます。
他にも奇妙なことが起こっています:1)preen_tagsには、unlesstags.nilを含める必要があります。preen_tagsの2)行ごとに、デバッガーを使用すると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