From 61140133f2a5399cb7f0ebc7397911464c736247 Mon Sep 17 00:00:00 2001 From: Trevor Vallender Date: Thu, 12 Oct 2023 16:24:33 +0100 Subject: [PATCH] Add support for draft blog posts --- app/controllers/blog_posts_controller.rb | 3 ++- app/models/blog_post.rb | 6 +++++- app/models/user.rb | 1 + app/views/users/show.html.erb | 3 +++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/controllers/blog_posts_controller.rb b/app/controllers/blog_posts_controller.rb index 5daaf4c..90d4dd7 100644 --- a/app/controllers/blog_posts_controller.rb +++ b/app/controllers/blog_posts_controller.rb @@ -5,7 +5,7 @@ class BlogPostsController < ApplicationController before_action :set_blog_post, only: [:show, :edit, :update, :destroy] def index - @blog_posts = BlogPost.all.order(created_at: :desc) + @blog_posts = BlogPost.published.order(created_at: :desc) end def new @@ -15,6 +15,7 @@ class BlogPostsController < ApplicationController def create @blog_post = BlogPost.new(blog_post_params) @blog_post.user = helpers.current_user + if @blog_post.save redirect_to @blog_post, notice: t(".created") else diff --git a/app/models/blog_post.rb b/app/models/blog_post.rb index ced1f25..08fa270 100644 --- a/app/models/blog_post.rb +++ b/app/models/blog_post.rb @@ -6,14 +6,18 @@ class BlogPost < ApplicationRecord validates :title, :user, - :published, :slug, :content, :summary, presence: true + validates :published, inclusion: { in: [true, false] } + validates :slug, uniqueness: true + scope :published, -> { where(published: true) } + scope :draft, -> { where(published: false) } + def to_param slug end diff --git a/app/models/user.rb b/app/models/user.rb index 85de9a8..c1235f4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -5,6 +5,7 @@ require "securerandom" class User < ApplicationRecord has_secure_password has_many :microposts + has_many :blog_posts validates :username, :first_name, diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index 53c1d9e..449b0e6 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -4,4 +4,7 @@ <% if @user == current_user %> <%= link_to t(".edit_user_details"), edit_user_path(@user) %> + +

Draft blog posts

+ <%= render @user.blog_posts.draft %> <% end %>