Hi,
Im currently working on an issue im having with a ruby method within my
rails project.
i have this method:
def saveAssetTags(asset, taglist)
#add new tags
tagList = taglist.split(/\s*\,\s*/)
#drop all current tags
asset.tags.clear
for metadata in tagList
tag = Tag.find_by_Tag(metadata)
unless tag
tag = Tag.new
tag.Tag = metadata
tag.save
end
asset.tags << tag
end
end
its taking in a list of tags from the client seperated by comma’s and
putting them into an array before saving them in my database. this all
works fine unless a user enters the same tag twice in which case i get a
duplication error in the db.
whats the best way to check the array for repeating attributes or to
check as i iterate through the loop?
Cheers,
Chris
Alle mercoledì 19 dicembre 2007, Chris G. ha scritto:
tagList = taglist.split(/\s*\,\s*/)
end
Cheers,
Chris
I can think of two approaches. If you don’t want to take any special
action if
there are duplicates tags (such as report an error), you can remove the
duplicates from the array using the Array#uniq method:
tagList = taglist.split(/\s*,\s*/).uniq
The other possibility is to store the found tags in a hash or array.
Something
like:
found_tags = {}
for metadata in tagList
if found_tags.has_key? metadata
#do what you need to do for a duplicate tag.
else
found_tags[metadata] = true
#do what you need to do for a non-duplicate tag
end
end
I hope this helps
Stefano
not to worry, found the answer myself by thinking about it.
just added .uniq to tagList :0
Thanks,
Chris
thanks stefano good to know I was on the right track!