使用neo4jRb Gem,如何获得has_one关联

时间:2017-02-25 13:19:36

标签: neo4j neo4jrb

所以我与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

我想接受从一个房间到另一个房间的Assigned_to关系 room.clients.each_with_rel工作正常 但我无法找到另一种方式来访问这种关系: client.room.rel 我尝试过client.room.rel,relationship,assigned_to等所有方法似乎都不起作用

1 个答案:

答案 0 :(得分:0)

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

使用最新版本的Neo4jrb gem(dunno您正在使用哪个版本),您可以client.room(chainable: true).each_with_rel do |node, rel|执行room.clients.each_with_rel do |node, rel|,与chainable: true相同。

has_one关联的has_many选项告诉neo4jrb返回一个关联代理(这是$response = $this->json('POST', '/foo/bar'); $response->myCustomAssertion(); 关联总是得到的。)