0

所以我用 neo4j 创建了 has_one 和 has_many 关系

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

我想接受从房间到客户端 room.clients.each_with_rel 的 Assigned_to 关系工作正常,但我找不到反过来访问该关系的方法:client.room.rel 我尝试过的所有方法 client.room.rel ,relationship,assigned_to 等似乎不起作用

4

1 回答 1

0

由于client.room是一个has_one关系,默认情况下 neo4jrb 获取关联代理,然后提取第一个(也是唯一一个)结果,返回room对象。ActiveNoderoom对象没有.each_with_rel方法。

使用最新版本的 Neo4jrb gem(不知道您使用的是哪个版本),您可以执行client.room(chainable: true).each_with_rel do |node, rel|哪个应该可以工作,与room.clients.each_with_rel do |node, rel|.

chainable: true关联选项告诉 neo4jrb 返回关联代理(这has_one是您始终通过has_many关联获得的)。

于 2017-12-30T04:09:01.103 回答