Database
- The scaffold generator create a database migration file in root_app/db/migrate
- rake command execute the migration files
- The DB to be used is specified in root_app/db/database.yml
Rails environment
- Development - When the application is created is in this mode, all changes are reflected immediately
- rails server - Deploy in development mode
- Use SQLite as part of the development environment
- Test - To run the tests
- Production - When the application is deployed
- rails server -e production - Deploy in production mode
Active Record
- Is a design pattern
- In Ruby is used as a mean of persisting data
- Is used to access data stored in relational databases
- Perform CRUD operations without worrying about the specific underlying database
- Encapsulates that notion an object-relational mapping (ORM)
Active Record Module
This pattern is provided in a module called ActiveRecord- Establish a connection
- ActiveRecord::Base.establish_connnection, use the information from root_app/config/database.yml
- Create database tables
- Specify association between tables to Ruby classes
- ActiveRecord::Migration - Incrementally evolve your DB overtime
- ActiveRecord::Schema.define - is created in file root_app/db/schema.rb, express its structure programmatically using a portable database-independent (DSL)
Interactive Ruby Shell (IRB)
Is an interpreter that allows real-time experimentation (like in python)
Command: irb
Command: quit - to exit
To have the console in rails
Command: rails console
Create an object: p = Post.new(:title => "My post", :body => "Post content")
Save the object: p.save
Command: quit - to exit
To have the console in rails
Command: rails console
Create an object: p = Post.new(:title => "My post", :body => "Post content")
Save the object: p.save
Create Relationship between models
These are the relationship types:
To apply this relationship to our model:
- Go to root_app/app/models
- Open the files *.rb
- File with the primary key, add the line has_many an the entity with the foreign key in plural. Ex: has_many :comments
- File with the foreign key, add the line has_many an the entity with the foreign key in singular. Ex: belongs_to :post
- To delete in cascade, in the entity with the primary key
- Add to the line dependent: destroy
- Ex: has_many : comments, dependent: :destroy
- Open the rails console
- Type p = Post.all and appear the comments related with a post and assigned to variable p.
- Type p[1].destroy and the second comment will be destroyed with his comment
Create new Routes
- Go to root_app/config
- Open the files routes.rb
- Add the line to the entity with the foreign key do resources:entity_primray_key
- Ex: resources :posts do resources :comments end
- Execute the command rake routes
- Now you have new routes like: http://localhost:3000/comments/3/edit
Comentarios
Publicar un comentario