Neo4jrb Запрос свойств отношений с QueryProxy и AssociationProxy

Мне интересно, можно ли указать свойство отношения во время цепочки ассоциаций. Следующий пример поможет вам понять:

      
  class AccountRel
    include ActiveGraph::Relationship

    from_class :Person
    to_class   :Social

    property :platform, type: [String] # Like [Instagram, Facebook]
  end


  class Person
    include ActiveGraph::Node
    self.mapped_label_name = 'Person'
    property :name, type: String
    property :gender, type: Boolean
    has_many :out, :socials, rel_class: :AccountRel, unique: true
  end


  class Social
    include ActiveGraph::Node
    self.mapped_label_name = 'Social'
    property :followers_count, type: Integer
    has_many :out, :friends, rel_class: :AccountRel, unique: true
  end

Моя цель - сделать что-то вроде этого:

      Person.socials({query on platform property of relationship AccountRel})
OR
Person.socials.where(node_var: {Social node properies}, rel_var: {AccountRel properties})

Насколько мне известно, Person.socialsвернуть AssociationProxy и с Person.socials.where(followers_count: 100)Я могу запросить социальные узлы, связанные с Человеком, с followers_count = 100, однако я не могу запросить отношения, которые связывают Person с Social. В терминах Сайфера я хотел бы сделать что-то вроде:

      match (n:Person)-[r:AccountRel]->(s:Social)
where r.platform in ["Instagram", "Facebook"]
return n

Я хочу уточнить , что я заинтересован в цепочки с помощью QueryProxy и AssociationProxy, я не нужна строка запроса Cypher ( «MATCH (п: Person) ..»). Следующее может быть хорошим подходом lang-ruby Person.socials(:s, :rel).where('rel.platform IN ["Instagram", "Facebook"]'), но мой запрос должен быть максимально динамичным, поэтому я бы хотел избежать обоих:

  • явное именование переменных, например: s и: rel в примере
  • строковый запрос в предложении where

0 ответов

Другие вопросы по тегам