ruby on rails - Gema Neo4j-Dirección de consulta detallada con has_many: ambos
ruby-on-rails relationship (1)
De acuerdo, estaba mezclando dos estilos diferentes de consultas
Por ejemplo, en los documentos tienen esto cuando ya se ha encadenado a la lesson
s.lessons(:l, :r).where("r.start_date < {the_date} and r.end_date >= {the_date}").params(the_date: ''2014-11-22'').pluck(:l)
Y algo como esto
Student.query_as(:s).where("s.age < {age} AND s.name = {name} AND s.home_town = {home_town}").params(age: params[:age], name: params[:name], home_town: params[:home_town]).pluck(:s)
Presta atención al lugar donde colocas las cosas .
y la parte query_as
versus the lessons(:l, :r)
query_as
lessons(:l, :r)
Mi consulta final que funcionó eliminó los componentes de match
porque ya estaba en la relación y el nodo que estaba consultando. Por lo tanto, se ve algo como esto.
current_user.friends.events(:event, :rel).where("rel.admin = {admin_p} AND event.detail = {detail_p}").params(admin_p: true, detail_p: true).pluck(:event)
Sin embargo, todavía me gustaría una respuesta a algunas de mis preguntas.
Pude hacer una coincidencia de patrón específica de esta pregunta original Gema Neo4j - Método preferido para tratar con la relación de administrador a través de este
Event.query_as(:event).match("(event)<-[invite:invited]-(user1:User)<-[friends_with:friends_with]-(user2:User)").where(''invite.admin = true'').pluck(:event)
No pude obtener una versión modificada como esta para que funcione
current_user.friends.events.query_as(:event).match("(event)<-[invite:invited]-(user:User)").where(invite: {admin: true}).pluck(:event)
Entonces, lo que realmente cambié fue cambiar la dirección para from_node
y to_node
en mi clase de invitación
from_class User
to_class Event
type ''invited''
Se estableció previamente como Event
a User
. Una de mis preguntas es, ¿por qué tuve que cambiar eso para que la consulta funcione? ¿No es el has_many: both
significan que la dirección no importa?
Otro cambio fue cambiar mi tipo de relación a minúsculas. En mi modelo, está escrito en minúsculas, lo que parece importar. Pensé que los dos se convertirían a mayúsculas como lo hace neo4j, pero tal como están ahora, no es así.
Creo que necesito hacer funcionar el método current_user ya que solo quiero los eventos de los amigos de current_user. Sugerencias?