Im Moment habe ich ein relativ komplexes Stück Code (es ist nicht so komplex), die ichein komplexe Änderung kommt in einen Sequel Verein
durch Sequel Assoziationen vereinfachen möchteMyApp::Model::Node.where { last_heartbeat > Time.now - HEARTBEAT_TIMEOUT.seconds }.join(:system_status, node_id: Sequel.expr(:node__id))
ziemlich böse, diese Aussage.
So würde ich gerne eine Sache, ziemlich viel erreichen: vereinfachen Sie die obige Aussage, indem Sie die Verbindung durch eine Verbindung in meinem SystemStatus
Modell ersetzen.
erklären Lassen Sie mich die oben kommen:
Ich habe zwei Tabellen Node
und SystemStatus
. Der Vergleich last_heartbeat > Time.now - HEARTBEAT_TIMEOUT.seconds
gibt mir im Wesentlichen alle "lebenden Knoten" in meiner Anwendung (meine Anwendung ist gruppiert, was bedeutet, dass der Benutzer mehrere Instanzen gleichzeitig erzeugen kann).
So dass Chaos einer Aussage gibt mir "alle Status meiner Live-Knoten", die von system_status.node_id
bis node.id
verbunden ist.
Also das ich begann, durch die Einrichtung aus meiner 00.59 Beziehung in SystemStatus
- dies die Zuordnung zu dem node
Tisch setzt
one_to_one :node
Als nächstes musste ich es von einem bestimmten Schlüssel node.id
anschließen, weil es keine ist einfach beitreten
one_to_one :node, key: :id
Aber meine Frage ist:
Wie mache ich den Rest dieses Vereins
Soll ich den Verein in
Node
durchführen zuSystemStatus
Gegensatz? Es scheint, ich könnte einfach tunone_to_one :system_status
und muss nicht einen Schlüssel angeben .. Die obige komplexe Join befindet sich in dernode
Modell sowieso.
Ich weiß nicht, warum, aber wenn ich die obige Aussage versuchen, es zu sagen 'nicht definierte Methode‚NODE_ID‘für # '. Scheint zu versuchen, 'node_id' als eine Methode zu interpretieren –
theGreenCabbage