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.

Reply via email to