On Apr 8, 9:47 pm, "Joe Smith" <unknown_kev_...@hotmail.com> wrote:
>
> That breaks left to right readability pretty badly. I really would like a
> better solution for negating predicates and predicate chains, but I'm not
> sure what.

I agree that I don't much like the way it just dangles there like
that, but I don't see any other way to accomplish what's desired. In
working with it, I find that it helps to imagine yourself back in the
90s for a moment.

"User name equals Bill or user name equals Ted... NOT!"

OK, maybe I'm just odd. Or maybe the method name needs an exclamation
point. :) In all seriousness, though, it's not much different than
something like String#reverse.

>
> You probably should also have the README file patched to indicate that AND
> and OR are implemented

The AND and OR the README refers to have been implemented for some
time.

>
> Also, I'm not sure how of :notmatches_any and :notmatches_all will react.
> Will the negation be applied before or after the combining?

Negation is on the predicate. notmatches_any will give you a predicate
something like:

(users.name NOT LIKE '%Joe%' OR users.name NOT LIKE '%Bob%)

The additional NOT would negate the whole thing:

NOT (users.name NOT LIKE '%Joe%' OR users.name NOT LIKE '%Bob%)

>
> Also if you have a _any and _all prefix, should you not also include a
> _none, too?

I don't necessarily think so, though I could add it if others think
otherwise. _none is the same as _any and not combined, and in the SQL
engine I'd say that's exactly how it'd have to be implemented, too.

>
> Also is ".not" in use out in the wild already? How will existing code react?
> Will it error out indicating that the new .not toes not take parameters?

The previous .not was a method on Arel::Attribute, not Arel::Predicate
-- I just renamed it to noteq because of the potential for exactly
that kind of confusion and for internal consistency . I'm not sure
what else out there is currently using Arel besides ActiveRecord, and
a search of the current source shows no use of Attribute#not in there.
It also only hit master on March 12th

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To post to this group, send email to rubyonrails-c...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-core+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en.

Reply via email to