2017-09-28 4 views
0

나는 루비와 루비 레일에서 시작합니다. 양식을 통해 기본에서이 개체 (아래)에 대한 액세스를 수정하려고하는데 테이블 node_tags에있는 값으로 필터링하고 싶습니다. SQL 요청에 아마레일 쿼리에 + 필터가 포함됩니다.

def map 
...... 
    nodes = Node.bbox(bbox).where(:visible => true).includes(:node_tags).limit(MAX_NUMBER_OF_NODES + 1) 
..... 
end 

SELECT * FROM nodes n INNER JOIN node_tags nt on n.node_id = nt.node_id where nt.k = 'alert' and nt.v = 'true' 

표 노드

| node_id | latitude | longitude | changeset_id | visible | timestamp | tile | version | redaction_id | 
|---------|-----------|-----------|--------------|---------|-----------|------|---------|--------------| 
| 11 | 473705641 | 3955487 | 11   | TRUE | 
| 12 | 473705641 | 3955487 | 12   | TRUE | 

표는 내가 바로 이해한다면, 당신은 당신의 예에서와 같이 SQL을 얻을 필요가

| node_id | k | v | 
|---------|-------|------| 
| 11  | name | bob | 
| 12  | alert | true | 
+0

무엇이 문제인가? 너는 무엇을 찾고 있느냐? – krishnar

답변

0

node_tags ORM (액티브 레코드). 시험해보기 :

nodes = Node.where(:visible => true).join(:node_tags).where("node_tags.k = 'alert' and node_tags.v = 'true'") 
관련 문제