Используя neo4jRb Gem, как мне получить связь в ассоциации has_one?
Поэтому я создал отношения has_one и has_many с neo4j
class Client
has_one :out , :room, model_class: :Room,rel_class: :AssignedTo
end
class Room
has_many :in , :clients, rel_class: :AssignedTo, model_class: :Client
end
class AssignedTo
include Neo4j::ActiveRel
from_class :Client
to_class :Room
type 'assigned_to'
property :from_date, type: DateTime
property :to_date , type: DateTime
end
Я хочу принять отношение Assigned_to от комнаты к клиенту room.clients.each_with_rel работает нормально, но я не могу найти способ получить доступ к отношениям наоборот: client.room.rel Все методы, которые я пробовал client.room.rel, отношения, assign_to и т. д., кажется, не работают
1 ответ
Поскольку client.room
это has_one
отношение по умолчанию neo4jrb получает прокси ассоциации, а затем получает первый (и единственный) результат, возвращая room
объект. room
У объекта ActiveNode нет .each_with_rel
метод.
Используя последнюю версию Geo Neo4jrb (не знаю, какую версию вы используете) вы можете сделать client.room(chainable: true).each_with_rel do |node, rel|
который должен работать так же, как room.clients.each_with_rel do |node, rel|
,
chainable: true
вариант для has_one
ассоциации говорит neo4jrb вернуть прокси-сервер ассоциации (это то, что вы всегда получаете с has_many
ассоциация).