Trying to auto create relationship and related nodes upon creating in rails app

Skip to first unread message

Ryan LeViseur

Oct 4, 2014, 3:30:18 PM10/4/14
Hey guys, I've been playing with getting neo4j working with a basic sample rails app, but am having issues. I've gone through nearly every example app and guide I can find, but they all deal with creating nodes and relationships separately and manually. So here's what I'm trying to accomplish.

I was trying to create a web form (in a Rails app) to enter details about a person. One of those details would be their gender. Upon submitting the form, Rails would create a new node for that person with properties for each of the details except for their gender. It would also create a new “GENDER” relationship between that person’s node and the appropriate node for their gender (either male or female). 

The form is currently creating the person node just fine, but I can't seem to figure out the gender piece. I am running neo4j 2.1.3, neo4j-core 3.0.0, neo4j 3.0.1, rails 4.1.5 and Ruby 2.1.2. To make things easier for people to help, I've pushed the code to github:

Any insight or help on what I am doing wrong would be greatly appreciated. Thanks!

Brian Underwood

Oct 5, 2014, 2:53:14 AM10/5/14
We actually have an example of something similar in our new intro screencast:

It would work for you assuming that you want to have a specific list
of genders. The basic idea is that you would create a drop-down in
your form which lists all of the nodes and their IDs, you would pass
that ID from the form to the controller as "gender" property, and then
ActiveNode would find the node with that ID and make a relationship.
Example code:

person.update(first_name: 'Brian', gender: <ID string representing the
gender node>)

Or alternatively I think you could do:

person.gender = <ID string representing the gender node>

If you want to allow for free-form text entry (I saw a great
presentation on why you might do this. Can't seem to find it now):

gender = Gender.query_as(:gender).merge(gender: {name: 'Whatever
person.update(first_name: 'Brian', gender: gender)

I think that will work. I'm also realizing it's not ideal and we
should probably have some find_or_create type higher level
functionality (here I'm using query_as to get to the Cypher generation
API in neo4j-core).

> --
> You received this message because you are subscribed to the Google Groups
> "neo4jrb" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to
> To post to this group, send email to
> Visit this group at
> For more options, visit

Ryan LeViseur

Oct 5, 2014, 6:09:32 PM10/5/14
Hey Brian,

Thanks for the response. I did look at the screencast before posting my question. That example relies on the gender nodes to already be created when adding the person. Technically that will work and isn't that difficult, but with this example I was more trying to learn and figure out the concept of being able to dynamically create the node if it doesn't exist and then build the relationship upon creating the person. Mostly because it will be helpful in future features. 

For example, if I later wanted to add the ability to add different types of media to people. I could upload an image that has multiple people. This can be done on the first person which would create the new node with the image and then additional people can later be related to it as well. 

I don't know. Maybe I'm really over thinking all of this, but I'm trying grasp the way I need to change up my typical rails & active record work flows in order to really use the power of neo4j for a genealogy app I've been wanting to build.

I'll take another stab at it later tonight, though.

Also, am I doing something wrong or does accepts_nested_attributes_for not work with the 3.0.1 release?

Thanks again,


Brian Underwood

Oct 6, 2014, 7:27:43 AM10/6/14
Not sure if you saw the end of my last E-Mail, but I believe it covers
a way to build a node and then link the relationship. It's two lines,
which isn't ideal. I just created this issue for discussion:

And accepts_nested_attributes_for doesn't work as far as I know. Did
it work in a previous release? Feel free to create an issue if you
need it


Ryan LeViseur

Oct 6, 2014, 10:44:05 AM10/6/14
I saw it, just haven't had a chance to go back and try testing it out yet. Thanks, though.

As for accepts_nested_attributes_for, I haven't ever had it working. I just asked because I saw it mentioned in the docs for the previous 2.x releases and it was something I'm familiar with in regular ActiveRecord for achieving something similar to what I was doing here. Basically, nested forms.

Thanks again and I'll keep an eye on that github issue.


On Saturday, October 4, 2014 1:30:18 PM UTC-6, Ryan LeViseur wrote:
Reply all
Reply to author
0 new messages