ActiveRecord Mechanics
Last updated
Last updated
Understand the connection between an ORM and Active Record
Understand why Active Record is useful
Develop a basic understanding of how to get started with Active Record
By now you are familiar with the concept of an , an Object-Relation Mapper, and should have written something of your own in the Student
and InteractiveRecord
classes. Our latest iteration was our most powerful yet, it could give us lots of functionality via inheritance.
While building your own ORM for a single Class
is a great way to learn about how object-oriented programming languages commonly interact with a database, imagine you had many more classes. To test and maintain custom code for each project we work on would distract our attention from making cool stuff to building database connectivity. To save themselves and other developers this headache, the Ruby gem team built the gem.
In this lesson we'll read about how to to have ActiveRecord
link our Ruby models with rows in a database table. We won't write the code yet, but we'll familiarize ourself with common code blocs used in ActiveRecord
-using projects.
Active Record is a Ruby gem, meaning we get an entire library of code just by running gem install activerecord
or by including it in our Gemfile
.
Once our Gem environment knows to put ActiveRecord
into the picture, we need to tell ActiveRecord
where the database is located that it will be working with.
We do this by running ActiveRecord::Base.establish_connection
. Once establish_connection
is run, ActiveRecord::Base
keeps it stored as a class variable at ActiveRecord::Base.connection
.
NOTE: If you'd like to type along in an IDE environment, you can experiment by using IRB with:
irb -r active_record
provided you've installedActiveRecord
withgem install activerecord
But our database is empty. Let's create a table to hold students.
Let's create our table using SQL:
students
.column_names
Retrieve a list of all the columns in the table:
.create
Create a new Student
entry in the database:
.find
Retrieve a Student
from the database by id
:
.find_by
Find by any attribute, such as name
:
attr_accessors
You can get or set attributes of an instance of Student
once you've retrieved it:
#save
And then save those changes to the database:
Note that our Student
class doesn't have any methods defined for #name
either. Nor does it make use of Ruby's built-in attr_accessor
method.
You've now seen how ActiveRecord
creates a link between Ruby and databases.
The last step is to tell your Ruby class to make use of ActiveRecord
's built-in ORM methods. With Active Record and other ORMs, this is managed through . We simply make our class (Student
) a subclass of ActiveRecord::Base
.
Our Student
class is now our gateway for talking to the students
table in the database. The Student
class has gained a whole bunch of via its inheritance relationship to ActiveRecord
. Let's look at a few of them
View on Learn.co and start learning to code for free.