【Ruby on Rails】exists?와 present?는 무엇이 다른가? ? ?

4068 단어 초보자루비Rails

전치



랭킹 기능 구현 중


서버가 시작되면 아래의 장소에서 화가났다.


exists? 그럼 안돼? ? ? ?

적당히 알고 있는 메소드를 넣고 있으면 present?라고 문제없이 가동했다. 이유를 모르기 때문에, 2개의 메소드에 어떤 차이가 있는지 조사해 보았다.

목적


  • 두 가지 차이점을 명확하게합니다

  • 1. 결론


  • 데이터베이스에서 데이터를 검색하기 전후에 다릅니다
  • 데이터베이스에서 얻은 값이 문자열, 배열 또는 존재 여부에 따라 다릅니다.

    exists?

    데이터베이스에서 데이터를 검색하기 전에 데이터가 있는지 여부

    present?

    데이터베이스에서 데이터를 검색한 후 조건에 해당하는 데이터의 존재를 확인할 때

    2. 원인



    실제로 처음에 든 예에서는 @today_ranks 에는 배열로 데이터를 건네주었으므로, present?로 정상적으로 가동했습니다.

    ranks_controller.rb
      def rank
        @today_post_ranks_user = Article.group(:user_id).where(created_at: Time.current.all_day).order('count(user_id) desc').limit(10).pluck(:user_id) # 今日投稿した記事
        @today_ranks = []
        @today_post_ranks_user.each do |user_id|
          @today_ranks.push({
            "user" => User.find(user_id),
            "count" => Article.where(created_at: Time.current.all_day).where(user_id: user_id).count,
          })
        end
    end
    

    덧붙여서!blank?도 같은 의미가 되어, 정상적으로 움직였습니다.

    참조



    nil? empty? blank? present? exists? 메서드를 상황에 따라 구분합시다[Rails]

    작성자 코멘트



    적당히 쓰면 뭔가 움직였다.
    아니고, 여기에서는 이런 사용법이 있어서 이렇게 움직였어!
    그리고 제대로 이유를 알 수 있도록 공부하겠습니다!

    내 프로필



    프로그래밍 학습 경력 3개월째의 계정입니다!
    프로그래밍 스쿨에서 배운 내용이나 자신이 망설인 부분 등의 출력을 위해 발신하고 있습니다.
    또, 프로그래밍 초학자에게 알기 쉽고, 간결하게 정리해 정보 공유할 수 있으면이라고 생각하고 있습니다.
    만약, 투고한 기사안에 잘못등 있으면, 코멘트란에서 교수 받을 수 있으면 다행입니다. 
  • 좋은 웹페이지 즐겨찾기