Rail Query包括+按列过滤

时间:2017-09-28 13:14:17

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我从Ruby和Ruby开始。我试图通过表单修改对该对象(下面)的访问,我想过滤表node_tags中的值。

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

可能在SQL请求

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   |

table node_tags

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

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要通过ORM(ActiveRecord)获取示例中的sql。 试试这个:

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