Ruby

Tree structures in Ruby on Rails

Oliver Brown
— This upcoming video may not be available to view yet.

This is becoming a trend - another built-in feature of Rails that will seriously help Galaxia development.

You can use acts_as_tree in a model to make it, well, act as a tree.

What this means is you add an extra field to the database called parent_id that tracks object’s parents. Rails automatically manages this for you and adds extra methods for dealing with trees (things for accessing parent, ancestors, children etc.). Just like the post on type, this is something I was already doing with Galaxia but managing myself.

Using “type” in Ruby on Rails

Oliver Brown
— This upcoming video may not be available to view yet.

By default Rails applies special meaning to certain fields in a database table. One of these fields is “type”.

The type fields is used by Rails to create a “single table inheritance model”. This sounds fairly complicated and is best explained with an example:

Imagine a forum system. A forum will have threads and replies. Threads and replies are different and have different functionality, but certainly share a lot of characteristics. So you might create a class message with two sub classes: replies and threads. In Rails you can store all these in one messages table with a type field set to either reply" or thread. When you load a message it will actually create either a reply or thread object (in stead of a message object). When you create a new object it stores it in the messages table with the correct type.

This is ideal for Galaxia. In fact it’s the model I used all along - I just had to write the functionality myself.