在不显式声明关系的情况下获取父节点



使用Neo4j/Ruby,我想获得节点的父节点。

// i can get the children node, but is there any way to access the parent nodes"
// @decision.next.each.map{|r|...}
// like:
// @decision.parents...
class Decision
  include Neo4j::ActiveNode
  property :title, type: String
  property :text, type: String
  property :ending, type: Boolean, default: nil
  property :rooting, type: Boolean, default: nil
  has_many :out, :next, rel_class: :Action, model_class: :Decision
  validates_uniqueness_of :input
end
class Action
  include Neo4j::ActiveRel
  before_save :check_input_type
  from_class :Decision
  to_class   :Decision
  type 'action'
  property :input, type: Integer
  property :expected_input, type: Integer
  validates_presence_of :input
  creates_unique :none
end

这应该很容易。你可以通过以下几种方式做到这一点:

class Decision
  include Neo4j::ActiveNode
  # ... properties
  has_many :out, :next, rel_class: :Action, model_class: :Decision
  # The straightforward way
  has_many :in, :parents, rel_class: :Action, model_class: Decision
  # Using `origin`
  has_many :in, :parents, origin: :next, model_class: :Decision
end

如果您只希望每个Decision 有一个父级,则关联也可以很容易地为has_one