我有一个应用程序,它使用Neo4j来后台处理一个模型,使用PostgreSQL来后台处理所有其他模型。这是Neo4j型号:
class Concept
include Neo4j::ActiveNode
property :name
def references
Reference.where(concept_uuid: uuid)
end
end
这是一个ActiveRecord模型。references表上有一个content_uuid:
class Reference < ActiveRecord::Base
def concept
Concept.where(uuid: concept_uuid).first
end
end
这是有效的,我可以毫无意外地做Reference.first.concept
和Concept.first.references
之类的事情。不过,我希望我能做一些简单的事情:
class Reference < ActiveRecord::Base
belongs_to :concepts
end
class Concept < ActiveRecord::Base
include Neo4j::ActiveNode
property :name
has_many :references
end
因为那样我就可以把Concept.first.references << new_reference
这样的东西从盒子里拿出来。是否存在此类功能?
我回复了Github问题,但我会在这里发布,以防有人遇到它!
目前,我们不打算将此功能构建到ActiveNode模块中。我当然可以看到如何创建一个新的模块和类来处理这类事情,但我们需要计划好,并想好要走多远。这个gem的目标是成为一个独立的OGM,由于提供ActiveRecord互操作性不是目标,我担心试图利用行为来帮助实现这一目标可能会导致糟糕的实现,而我们这边的支持很差。
你可能想看看Neoid宝石,它的重点正是这个,如果/当它的重建完成时,我认为它会做得很好。