rails7: 点赞功能 likes
常用的点赞功能实现
提示词
提示
chatGPT
帮我设计系统
rails7 实现
点赞功能,限定登录用户才可以点赞,还有取消点赞功能
不要使用 gem. 我有posts表,是我的文章
系统 model
- user → like: 1个用户,可以点多个赞(like)
- post → like: 1个文章,可以被多个用户点赞(like) → 1个文章,可以被点多个赞
添加
likes
表,用于存 点赞功能的
rails g model Like user:references post:references
rails db:migrate
在 app/models/user.rb
中,添加用户和点赞的关联
# app/models/user.rb
class User < ApplicationRecord
has_many :likes, dependent: :destroy
end
添加 app/models/post.rb
中添加关联
dependent: :destroy
当 post 删除的时候,相关联的 likes 也会被删除
# app/models/post.rb
class Post < ApplicationRecord
has_many :likes, dependent: :destroy
end
在 app/models/like.rb
中添加关联
class Like < ApplicationRecord
belongs_to :user
belongs_to :post
end
更新路由
查看 Like 相关的路由 rails routes -g like
# config/routes.rb
resources :posts do
member do
post 'like', to: 'posts#like'
delete 'unlike', to: 'posts#unlike'
end
end