A Ruby on Rails blog application with blogs and comments functionality.
This application demonstrates CRUD operations for blogs, nested comments, published/unpublished status, validations, and RESTful routing.
- Extract the zip file
unzip blog_app_assignment.zip
cd blog_app- Install Ruby dependencies
bundle install- Create master key (if missing)
# Create a new master key or use dummy credentials
EDITOR="echo 'secret_key_base: $(rails secret)' >" rails credentials:edit
# Or simply create an empty master.key
echo "$(openssl rand -hex 32)" > config/master.key- Setup database
rails db:create
rails db:migrate
rails db:seed- Start the server
rails server- Visit the application
http://localhost:3000
- Ruby 4.0.1 or higher
- Rails 8.1.2 or higher
- SQLite3
- Bundler
- Install dependencies:
bundle install- Setup database:
rails db:create
rails db:migrate
rails db:seed- Start the server:
rails serverrails db:create
rails db:migrate
rails db:seed
rails db:reset
rails db:rollbackrails server
rails s
rails s -p 3001rails console
rails crails routes
rails routes | grep blogsrails generate model ModelName field:type
rails generate controller ControllerName
rails generate scaffold ModelName field:type
rails generate migration MigrationNamerails consoleExample queries:
Blog.published
blog = Blog.new(title: "Test", body: "Test content")
blog.valid?
blog = Blog.published.first
blog.comments.create(author: "John", content: "Great post!")
Blog.where(published: true)
Blog.find_by(title: "Published Blog 1")
Blog.limit(5)
Blog.order(created_at: :desc)- CRUD operations for blogs
- Nested comments under blogs
- Published/Unpublished status with scopes
- Validations (blogs and comments)
- RESTful routing
- API endpoints (JSON support)
- Seed data (20 blogs, comments)
title(string) - required, 3-200 charactersbody(text) - required, minimum 10 characterspublished(boolean) - default: false- Has many comments
content(text) - required, minimum 5 charactersauthor(string) - required- Belongs to blog
- Can only be added to published blogs
GET /blogs
POST /blogs
GET /blogs/:id
PATCH /blogs/:id
DELETE /blogs/:id
PATCH /blogs/:id/publish
GET /blogs/:blog_id/comments
POST /blogs/:blog_id/comments
DELETE /blogs/:blog_id/comments/:id
app/
├── controllers/
│ ├── blogs_controller.rb
│ └── comments_controller.rb
├── models/
│ ├── blog.rb
│ └── comment.rb
└── views/
└── blogs/
config/
└── routes.rb
db/
├── migrate/
└── seeds.rb