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 [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/datamapper?hl=en.