0
Ich habe eine Implementierung für eine Diagrammknotenklasse, die als gerichteter azyklischer Graph fungieren soll.So geben Sie den Primärschlüssel in einer Durchgangsverknüpfung an
Die Verbände grob sind als
class Node
has_many :edges
has_many :parents,
:foreign_key => 'parent_id',
:through => :edge
has_many :parent_edges,
:foreign_key => 'child_id',
:class_name => 'Edge',
:dependent => :destroy
# similar for children
end
class Edge
belongs_to :parent,
:class_name => 'Node'
# similar for child
has_many :edge_properties
end
folgt Wenn ich versuche, eine Beziehung von Elternknoten zu greifen, verwendet die erzeugte Abfrage noch node_id
als Primärschlüssel.
SELECT `nodes`.*
FROM `nodes`
INNER JOIN `edges`
ON `nodes`.`id` =
`edges`.`parent_id`
WHERE `edges`.`node_id` = 16 # where clause uses node_id, should be child_id
ORDER BY `nodes`.`name` ASC
Was kann ich diese Abfrage ändern child_id
in der where-Klausel zu verwenden?
Haben Sie versucht, 'zu setzen: foreign_key =>: child_id' in the Edge' belongs_to: parent' Linie? Außerdem: Können Sie uns den Rails-Code zeigen, der diese SQL generiert? –