ActiveRecord conditions: Symbol or String

548 views
Skip to first unread message

dnagir

unread,
Apr 19, 2012, 11:15:50 PM4/19/12
to rubyonra...@googlegroups.com
Hi,

A quick question: in the query `Company.where(:status => :active)`, is it OK to use the symbol (:active) as a value in the query?

It definitely works with no issues at all.

But there's a lot of controversy around that in the squeel:
 
Ernie explains that the use of Symbols in ActiveRecord wasn't assumed and is incorrect.
Additionally, he says "In AR documentation, symbols are never shown as a value in examples.".

I personally feel a bit lost in this regard and it would be awesome if somebody could shade some light on this.

Cheers,
Dmytrii.

Michael Koziarski

unread,
Apr 20, 2012, 12:13:42 AM4/20/12
to rubyonra...@googlegroups.com

Hi,

A quick question: in the query `Company.where(:status => :active)`, is it OK to use the symbol (:active) as a value in the query?

It definitely works with no issues at all.

I'm not sure I'd consider it a public stable API, but if it works, go wild :).
 

Dmytrii Nagirniak

unread,
Apr 20, 2012, 6:21:44 AM4/20/12
to rubyonra...@googlegroups.com

So it is not a public API and the symbols were not supposed to be used this way? RIght?

Jon Leighton

unread,
Apr 20, 2012, 7:30:16 AM4/20/12
to rubyonra...@googlegroups.com
On 20/04/12 12:21, Dmytrii Nagirniak wrote:
>>> Hi,
>>>
>>> A quick question: in the query `Company.where(:status => :active)`, is it OK to use the symbol (:active) as a value in the query?
>>>
>>> It definitely works with no issues at all.
>>>
>> I'm not sure I'd consider it a public stable API, but if it works, go wild :).
>
> So it is not a public API and the symbols were not supposed to be used this way? RIght?

It's not really good Ruby style. See
http://blog.hasmanythrough.com/2008/4/19/symbols-are-not-pretty-strings

However I think we'd probably have to add specific code to make it *not*
work, so it will probably continue to work in the future. But I wouldn't
recommend doing it.

--
http://jonathanleighton.com/

Dmytrii Nagirniak

unread,
Apr 22, 2012, 10:37:00 PM4/22/12
to rubyonra...@googlegroups.com

On 20/04/2012, at 9:30 PM, Jon Leighton wrote:

> On 20/04/12 12:21, Dmytrii Nagirniak wrote:
>>>> Hi,
>>>>
>>>> A quick question: in the query `Company.where(:status => :active)`, is it OK to use the symbol (:active) as a value in the query?
>>>>
>>>> It definitely works with no issues at all.
>>>>
>>> I'm not sure I'd consider it a public stable API, but if it works, go wild :).
>>
>> So it is not a public API and the symbols were not supposed to be used this way? RIght?
>
> It's not really good Ruby style. See http://blog.hasmanythrough.com/2008/4/19/symbols-are-not-pretty-strings

Do you mind to explain why exactly?
I get the difference between strings and symbols, but in the example of "status" the string is definitely a wrong candidate to me.
It is "internal" to the system.
Although I understand and ok with converting it to a string to query, I don't see why symbol isn't good in this case (`company.status == :active`).

> However I think we'd probably have to add specific code to make it *not* work, so it will probably continue to work in the future. But I wouldn't recommend doing it.

I think you guys have settled that symbols are not "officially supported" here https://github.com/ernie/squeel/issues/67#issuecomment-5270896

So I'll take it for granted. Thanks a lot for the help.

Cheers.

Dmytrii Nagirniak

unread,
Apr 22, 2012, 11:50:45 PM4/22/12
to rubyonra...@googlegroups.com

On 23/04/2012, at 12:37 PM, Dmytrii Nagirniak wrote:

I think you guys have settled that symbols are not "officially supported" here https://github.com/ernie/squeel/issues/67#issuecomment-5270896

So I'll take it for granted. Thanks a lot for the help.

Reply all
Reply to author
Forward
0 new messages