So I''ve got a model called Item and one of its properties is called
"tags". It''s just string that is a simple comma separated
list of tags
associated with the item. I''m trying to do two things. First create a
list of items with the most common tags (the top ten or so) and second
allow the user to click on a link that will show all the items with the
selected tag.
My problem is actually with the second task. Retrieving records that
contain the tag "dog" for example is pretty simple, however I ran into
a
problem when I needed to retrieve records with the tag "not a dog".
Whenever I search for records with the tag "dog" it also returns the
records with the tag "not a dog" because "dog" is in
"not a dog".
It took me a while but I got something that does what I want it to do,
but I''m just not convinced it''s the best way to go about doing
things.
Here''s what I got:
@items = Item.find(:all, :conditions => [''tags LIKE ? and folder_id
?'', ''%'' + params[:tag] + ''%'',
@folder.id])
@items.delete_if { |item|
tags = item.tags.split('','')
delete = true
for tag in tags
tag.downcase!
tag.strip!
if tag == params[:tag]
delete = false
end
end
delete
}
Whenever params[:tag] is "dog" this succeeds in only picking out the
items that contain the tag "dog" but not ones that contain similar
tags
such as "not a dog". But like I said it just seems icky and not
cumbersome.
Is there some way to make the find command, or the SQL syntax for like
handle searching through comma separated lists?
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.