如何查询多态关联和图形?

时间:2019-04-11 22:33:17

标签: ruby-on-rails polymorphic-associations

设置

我有一个由下面的类表示的无向完整图。

const int l=3;

节点名称可以重复以具有任意数量的Foos,Bar或Foos and Bars连接。

我的目标

给出控制器参数:

class Node # (id, name, groupable_type, groupable_id)
  belongs_to :groupable, polymorphic: true
end

class Foo # (id, val1)
  has_many :nodes, as: groupable
end

class Bar # (id, val2)
  has_many :nodes, as: groupable
end

class Edge # (id, node_a_name, node_b_name, weight)
  belongs_to :node_a, class_name: 'Node', primary_key: 'name', foreign_key: 'node_a_name'
  belongs_to :node_b, class_name: 'Node', primary_key: 'name', foreign_key: 'node_b_name'
end

我希望能够使用ORM编写单个查询,该查询将为我提供与节点相对应的边缘,因此我可以获得边缘的权重。我还想我需要一个子选择。

我尝试过的事情:

  • {node_a: {foo: {value: "x"}}, node_b: {bar: {value: 294}}} preload一起使用,但会出现紧急加载的多态错误。
  • 通过Edge的节点关联设置关联。

环境

在Ruby 2.1.5(旧版应用程序)上的Rails 4.1.8 Postgres数据库

0 个答案:

没有答案