我是neo4j(2.3.0)的新手,我想玩关系属性 我使用了andreasronge的gem neo4j.rb 我创建了一个关系类
class Connection < Neo4j::Rails::Relationship
property :connection_type, :machine, :quote => :exact # index both properties
property :reference, :type => String
property :updated_at
property :created_at
end
和模型类
class Part < Neo4j::Rails::Model
property :name, :type => String, :index => :exact
property :updated_at
property :created_at
has_n(:subpart)
has_n(:connect_to).to(Part).relationship(Connection)
has_n(:connection_from).from(Part, :connect_to)
validates_presence_of :name
end
我想在具有不同属性的两个部分之间创建多个连接 例如
part1= Part.new(name:'p1')
part2= Part.new(name:'p2')
part3= Part.new(name:'p3')
c1 = part1.connect_to << part2
c1.type = 'blue'
c2 = part1.connect_to << part2
c2.type = 'red'
c3 = part1.connect_to << part3
c3.type = 'blue'
但是c1,c2和c3类不是Connection而是Relationship,所以我不能指定属性类型。
答案 0 :(得分:2)
我假设你正在使用Neo4j.rb 2.3,因为你打电话给&#34;关系&#34; has_n(:connect_to).to(Part).relationship(Connection)
中的方法,它不会包含在版本3中,目前以alpha格式提供。但是,如果您使用的是3.0 alpha版本,那么您就遇到了问题。维基上的一些文档是指3.0版本,如果你进行一些搜索,你会发现很多版本1.0的文档并不适用。
在您的关系保持不变之前,您需要保存一个节点。您也无法按照您尝试的方式设置属性。这样做。
part1 = Part.create(name:'p1')
part2 = Part.create(name:'p2')
part3 = Part.create(name:'p3')
part1.connect_to << part2
part1.save
c1 = part1.rels.to_other(part2).first
c1.name = 'this is a name'
c1[:type] = 'blue'
c1.save
part1.connect_to << part2
part1.save
c2 = part1.rels.to_other(part2).to_a[1]
c2[:type] = 'red'
part1.connect_to << part3
part1.save
c3 = part1.rels.to_other(part3).first
c3[:type] = 'blue'
c3.save
您的财产将被存储。如果尚未在关系对象上定义新属性,则需要使用符号来创建新属性。在您的情况下,您已经能够访问关系中的name
方法,因为您提前定义了它,如上所示。