jsw: 文章置顶功能
自己开发blog的文章置顶功能
背景
最近在开发项目,有个每天都要看的文档,由于长久不更新,经常被挤到其它地方去了
需求
- 我的 blog 有一个
posts
表,我希望开发一个文章置顶功能 - 我使用的框架是 ruby on rails
migrate
rails generate migration AddIsStickyToPosts is_sticky:boolean
rails db:migrate
更新模型
你可以使用
before_save
回调来实现这一点。在app/models/post.rb
文件中添加以下代码
class Post < ApplicationRecord
before_save :set_default_sticky
# ...
private
def set_default_sticky
self.is_sticky ||= false
end
end
更新控制器和视图
你需要对置顶的文章进行特殊处理,使它们显示在列表的顶部。在控制器中,可以按照
is_sticky
字段进行排序.
class PostsController < ApplicationController
def index
@posts = Post.order(is_sticky: :desc, created_at: :desc)
end
# ...
end
添加更新接口
namespace :api do
resources :posts, only: [:update]
end
实际api
### update is_sticky
PUT http://localhost:3020/admin/posts/1
Authorization: {{ token }}
Content-Type: application/json
{
"is_sticky": false
}
最终效果
我的 blog 后台部分功能截图如下。