Alle mercoledì 19 dicembre 2007, Chris Gallagher ha scritto: > 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 I can think of two approaches. If you don't want to take any special actionf 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