More about Models¶ ↑
Models are used to persist data. That data could be anything. The balance in a bank account, A list of your favorite restaurants, your blog posts, you name it. Camping
uses the ActiveRecord Gem, an ORM (object-relational mapper), that maps Database tables to objects.
We define models by inheriting from a base model named Base:
class User < Base end
Very creative. Base is really just an alias for ActiveRecord, nothing fancy. We put our models into a namespaced module named after our App:
Camping.goes :Nuts module Nuts::Models class User < Base end end
Remember from earlier that Models need to be defined before our controllers, otherwise we can’t use em. So keep them close to the top.
The new User model we’ve defined has a small problem, it’s completely empty, it doesn’t have any data that can be stored in it. Camping
models map Database tables to objects automatically, but this model doesn’t have a database table yet. To fix that we’ll create a migration:
Camping.goes :Nuts module Nuts::Models class User < Base; end # Define a migration to add users class AddUser < V 1.2 def self.up create_table User.table_name do |t| t.string :username t.string :email t.timestamps end end def self.down drop_table User.table_name end end end
Databases, like birds, migrate. Migrations move our database from one configuration to another. In our case we’re adding users. So cool. User’s should be able to log in, sign up, maybe make some pages. We could make the next myspace. To get our database to make a users table we need force our app to create the schema.
def Nuts.create Nuts::Models.create_schema end
Now that puppy will migrate when we launch our app.
Our Users now have greater hope to survive. So great. I love it.