rails7: 点赞功能 likes

常用的点赞功能实现
更新于: 2023-12-16 14:53:57

提示词

 提示 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

参考