Neo4j rb继承
Neo4j rb inheritance
我在 rails 应用程序中使用 Neo4j.rb。
我在多态性方面遇到了麻烦。
我有这样的东西我有一个用户 class 看起来像这样:
class User
include Neo4j::ActiveNode
#other properties
has_many: out, :social_media_content, model_class: :SocialMediaContent
end
我有 SocialMediaContent class
class SocialMediaContent
include Neo4j::ActiveNode # Is it necessary?
property :first_name, type: Integer
property :first_name, type: Integer
end
我想要一个图像 class 和一个视频 class 继承自社交媒体内容
这是否意味着在创建 SocialMediaContent 和用户之间的关系时我可以提供图像或视频对象而不是 SocialMediaContent,它在数据库中是如何发生的,我是否需要为图像提供一个节点作为嗯还是可以是普通物体
即
class Image < SocialMediaContent
include Neo4j::ActiveNode #Do i have to do this?
我想要这样的行为: 每个用户都有很多 SocialMediaContent,可以是图像或视频(目前)我现在不想指定是哪一个其中一个是图片,一个是视频。
任何人都可以建议我如何实现这个目标吗?
最后我可以存储一组 SocialMediaContent 而不是 has_many 关联(哪个更好?)
是的,你绝对可以做到。在 Neo4j.rb 中,当您从 ActiveNode
class 继承 class 时,子 class 表示具有两个标签的节点。例如:
class SocialMediaContent
include Neo4j::ActiveNode # This is necessary for the parent
end
class Image < SocialMediaContent
# No include needed
end
class Video < SocialMediaContent
# No include needed
end
现在,如果您执行 Image.create
,它将创建一个同时具有 Image
和 SocialMediaContent
标签的节点。如果您搜索具有 Image.find
、Image.where
等的图像...它将仅限于具有两个标签的节点。
至于关联,您应该能够在问题中指定它(尽管如果您没有 type
、rel_class
或origin
选项)。
我在 rails 应用程序中使用 Neo4j.rb。 我在多态性方面遇到了麻烦。
我有这样的东西我有一个用户 class 看起来像这样:
class User
include Neo4j::ActiveNode
#other properties
has_many: out, :social_media_content, model_class: :SocialMediaContent
end
我有 SocialMediaContent class
class SocialMediaContent
include Neo4j::ActiveNode # Is it necessary?
property :first_name, type: Integer
property :first_name, type: Integer
end
我想要一个图像 class 和一个视频 class 继承自社交媒体内容
这是否意味着在创建 SocialMediaContent 和用户之间的关系时我可以提供图像或视频对象而不是 SocialMediaContent,它在数据库中是如何发生的,我是否需要为图像提供一个节点作为嗯还是可以是普通物体
即
class Image < SocialMediaContent
include Neo4j::ActiveNode #Do i have to do this?
我想要这样的行为: 每个用户都有很多 SocialMediaContent,可以是图像或视频(目前)我现在不想指定是哪一个其中一个是图片,一个是视频。
任何人都可以建议我如何实现这个目标吗? 最后我可以存储一组 SocialMediaContent 而不是 has_many 关联(哪个更好?)
是的,你绝对可以做到。在 Neo4j.rb 中,当您从 ActiveNode
class 继承 class 时,子 class 表示具有两个标签的节点。例如:
class SocialMediaContent
include Neo4j::ActiveNode # This is necessary for the parent
end
class Image < SocialMediaContent
# No include needed
end
class Video < SocialMediaContent
# No include needed
end
现在,如果您执行 Image.create
,它将创建一个同时具有 Image
和 SocialMediaContent
标签的节点。如果您搜索具有 Image.find
、Image.where
等的图像...它将仅限于具有两个标签的节点。
至于关联,您应该能够在问题中指定它(尽管如果您没有 type
、rel_class
或origin
选项)。