Rails에서 커스텀 메소드 만들기

오늘은 레일에서 사용자 지정 메서드를 만드는 방법을 다루고 싶었습니다. Rails는 매우 강력한 도구이며 프런트 엔드에서 수행하려는 많은 작업을 수행할 수 있습니다.

내가 작업한 예를 살펴보겠습니다.

세 개의 테이블이 있습니다.
  • 사용자
  • 레스토랑
  • UserRestaurant - 사용자 및 레스토랑에 대한 조이너 테이블

  • UserRestaurant 테이블은 사용자와 식당 모두에 속합니다. 또한 다음 정보를 보유합니다.
  • 찬성? (부울)
  • 다운보팅? (부울)
  • 리뷰(문자열)

  • 따라서 사용자가 음식점에 대한 찬성, 반대 및/또는 리뷰를 남기면 UserRestaurant 테이블에서 이를 처리합니다.

    이제 사용자가 레스토랑을 찬성하면 UserRestaurant 인스턴스가 생성되고 찬성? 속성은 백엔드에서 true로 설정됩니다. 그러나 동일한 사용자가 동일한 레스토랑에 대한 리뷰를 남기고자 한다면 어떻게 될까요? 먼저 원본 인스턴스를 찾은 다음 업데이트해야 합니다. 필터와 그렇지 않은 것을 사용하여 프런트엔드에서 이 작업을 수행하거나 백엔드에서 동일한 작업을 수행할 수 있습니다. 또는 사용자가 먼저 리뷰를 남긴 다음 찬성표를 던진다면 어떻게 될까요? 리뷰가 포함된 UserRestaurant 인스턴스를 만든 다음 upvoted?를 업데이트해야 합니다. 기인하다.

    여기에서 사용자 지정 방법을 만드는 것이 도움이 될 수 있습니다.

    먼저 upvote를 만드는 것을 달성하기 위해 작성한 약간의 코드가 있습니다.

    def create_update
            # I'm just taking the params that were sent with the post request here and setting them with different variable names 
            #ur_params here permit the following attributes: user_id, restaurant_id, upvoted?, downvoted?, and review
            user_id =ur_params[:user_id]
            restaurant_id = ur_params[:restaurant_id]
    
            # I then check to see if this instance exists
            ur_found = UserRestaurant.find_by user_id: user_id, restaurant_id: restaurant_id
    
            # If the UserRestaurant exists for this specific pair, just update it
            if ur_found
                ur_instance = ur_w_all
                ur_instance.update(ur_params)
            # If the UserRestaurant doesn't exist, create it!
            else
                ur_instance = UserRestaurant.create(ur_params)
            end
            render json: ur_instance, status: :created
    end
    


    이 사용자 지정 방법을 사용하면 필요할 때 업데이트와 생성을 모두 처리할 수 있습니다!

    즐거운 코딩하세요!

    좋은 웹페이지 즐겨찾기