2011-09-28 5 views
1

나는 부울 열인 Flag를 질의하는 레일 앱에 루비를 가지고 있습니다. 코드는 다음과 같습니다왜 postgresql에서 where 쿼리가 작동하지 않습니까?

Merchant.where

그러나이 전혀 작동하지 않는 유일한 결과는 상인 테이블 열 이름 "플래그"가되지 않는다는 것입니다 (거짓 "깃발 =?"). 이 문제를 해결할 방법이 있습니까? 열 이름은 대문자로 시작하지만 검색은 소문자 "플래그"에 대해 수행됩니다.

+0

예 플래그를 인용했습니다. –

+0

"플래그"또는 "플래그"입니까? RoR에서 대회는 소문자를 사용합니다. – Behrang

답변

1

테이블을 만들 때 열 이름을 인용 한 경우 영원히 인용해야합니다. 그래서, 경우에 당신이 시작 :

create table merchants (
    -- ... 
    "Flag" boolean 
    -- ... 
) 

그런 다음 당신은 (표준 말한대로 위없는 경우)를 소문자로

Merchant.where('"Flag" = ?', false) 

PostgreSQL을 모두 인용되지 않은 식별자를 정규화 사용하여 참조해야합니다, 그게 바로 오류 메시지가 보다는 flag에 대해 불평하는 이유입니다.

가능한 경우 소문자 열 이름 만 사용하여 테이블을 다시 작성할 수 있습니다.

관련 문제