Monday, May 20, 2024
HomeRuby On RailsLike Relationships and World ID

Like Relationships and World ID


# Terminal
rails g scaffold put up consumer:belongs_to title content material
rails g mannequin users_post consumer:belongs_to put up:belongs_to
rails g controller Posts::Likes
rails routes | grep likes
# fashions/put up.rb
class Publish < ApplicationRecord
  belongs_to :consumer

  has_many :users_posts
  has_many :liked_by_users, via: :users_posts, supply: :consumer

  # Publish.first.liked_by_users.measurement
finish
# fashions/users_post.rb
class UsersPost < ApplicationRecord
  belongs_to :consumer
  belongs_to :put up
finish
# fashions/consumer.rb
class Person < ApplicationRecord
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

  has_many :users_posts
  has_many :liked_posts, via: :users_posts, supply: :put up

  has_many :posts
finish
# controllers/posts/likes_controller.rb
class Posts::LikesController < ApplicationController
  def create
    put up = Publish.discover(params[:post_id])
    current_user.users_posts.create(put up: put up)
    redirect_to put up, discover: "Publish appreciated"
  finish

  def destroy
    # put up = Publish.discover(params[:post_id])
    # current_user.users_posts.find_by(put up: put up).destroy!
    # redirect_to put up, discover: "Publish unliked"

    # users_post = UsersPost.discover(params[:id])
    # users_post.destroy
    # redirect_to post_path(users_post.post_id), discover: "Publish unliked"

    # users_post = GlobalID::Locator.find(params[:id])
    users_post = GlobalID::Locator.locate_signed(params[:id])
    users_post.destroy
    redirect_to post_path(users_post.post_id), discover: "Publish unliked"
  finish
finish
# config/routes.rb
Rails.utility.routes.draw do
  sources :posts do
    scope module: :posts do
      sources :likes, solely: [:create, :destroy]
    finish
  finish
  devise_for :customers
  root to: 'welcome#index'
finish
# controllers/posts_controller.rb
  def present
    @liked_post = UsersPost.find_by(consumer: current_user, put up: @put up)
  finish
# views/posts/present.html.erb
<%# if current_user.liked_post?(@put up.id) %>
<% if @liked_post %>
  <%# link_to "in contrast to", post_like_path(@put up, id: @liked_post.to_global_id), technique: :delete %>
  <%= link_to "in contrast to", post_like_path(@put up, id: @liked_post.to_sgid(expires_in: 1.hour)), technique: :delete %>
<% else %>
  <%= link_to "like", post_likes_path(@put up), technique: :put up %>
<% finish %>
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments