Используя 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 ассоциация).

Другие вопросы по тегам