Check if value has already been used

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 :slight_smile: good to know I was on the right track!