activerecord-hackery/squeel

Can't co-exist with scope like where(:status => :ACTIVE)

zhangxue opened this issue · 3 comments

After adding squeel into the project, all existing scope that has expressions like where(:status => :ACTIVE) failed, because it generates sql like:
SELECT people.* FROM people WHERE people.status = people.ACTIVE

Of course changing :ACTIVE into string will solve the problem, but I am a little worried about needing to double check all existing scope. And the conflict with standard rails usage also make me hesitate to use squeel, since someone new may break it easily.

Any ideas/suggestions?

Btw: I am using Rails 3.1.1 and I leave symbol extension disabled.

Having looked over older issues, we concluded that you can't use symbols for the RHS of where clauses (see plenty of other links, included that linked above).

We were still surprised that the order block required strings only as well - given it's normally columns, which are allowed on the LHS of where clauses. But certainly changing them to strings fixes up the code for us, so we accept it given the goodness Squeel brings otherwise.

But yeah, Squeel is an API breaker, albeit a breaker of a poorly defined API ! And from the end of the link posted above, it seems those in control of the Active Record API approve, so it's a "safe" breakage I guess.

How can I not seeing this after 10 mins of search in the closed issues list! Thanks @Nami-Doc