Way less readable and elegant though ;) This is a bug. DataMapper should know that URI properties are dumped to strings, so that should be what it does when it generates the query.
That said, your original query is wrong. It should have the '%' marks around the search string: person.photos.all(:url.like => '%amazon%').destroy What version of DM are you using? I just tried this with a model we use URI types on and it worked as expected. I tried it both directly on the model, and by going through a 1:m relationship. (DM 1.2.0). Il giorno 23/ago/2012, alle ore 03:14, Abe Voelker ha scritto: > Also from your example it looks like DM is pulling in the url field as an > Addressable::URI, so it is probably already fetching all the associated > records from the DB in order to load them into memory to parse into > Addressable::URI structures. If that's the case, then I don't think there > would be any additional performance overhead from what you originally had to > just doing > > person.photos.all.select{|photo| photo.url.host.downcase == 'amazon.com'} > > On Wednesday, August 22, 2012 12:01:05 PM UTC-5, Abe Voelker wrote: > Is this too SQL-ish? > > person.photos.all(:conditions => ['"url" ilike ?', "%amazon%"]) > > On Wednesday, August 22, 2012 11:48:23 AM UTC-5, Neil C wrote: > Besides, obviously, a SQL solution. > > Thanks. > > > > On Wednesday, August 22, 2012 12:45:52 PM UTC-4, Neil C wrote: > I am trying to do the following: > > person.photos.all(:url.like => "amazon").destroy > > As you might guess, 1 person has n photos, and each photo has a url property. > I am trying to remove any photos with "amazon" in the URL. > > When I do this, I get the following: > > NoMethodError: undefined method `gsub' for #<Addressable::URI:0x3fc672305d40 > URI:amazon> > > Any insight into solving this is appreciated. > > Thanks. > > -- > You received this message because you are subscribed to the Google Groups > "DataMapper" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/datamapper/-/K0BzmeduifoJ. > To post to this group, send email to datamapper@googlegroups.com. > To unsubscribe from this group, send email to > datamapper+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/datamapper?hl=en. -- You received this message because you are subscribed to the Google Groups "DataMapper" group. To post to this group, send email to datamapper@googlegroups.com. To unsubscribe from this group, send email to datamapper+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.