【Rails】belongs_to로 연결했는데 데이터를 저장할 수 없어요→단수 형식으로 바뀌었나요?

4015 단어 초학자RubyRails

개시하다


Rails 앱 제작 과정에서belongs_to에서 해당 모델의 데이터가 잘 저장되지 않아 팝업되기 때문에 이를 해결하는 방법이다.
정말 불가사의한 오류

이 보도에 도움이 되는 사람

  • belongs_to에 연관이 있지만 제대로 저장되지 않음
  • 이 보도의 장점

  • 데이터를 안전하게 보관할 수 있습니다.
  • 컨디션

  • macOS Catalina 10.15.1
  • zsh: 5.7.1
  • Ruby: 2.6.5
  • Rails: 5.2.3
  • 잘못된 내용


    User 모델 및 Record 모델은 일대다 관계식을 가정합니다.
    Record 테이블의 데이터를 다시 작성하여 save!에서 데이터를 저장하려고 할 때 다음과 같은 오류가 발생했습니다.
    ActiveRecord::RecordInvalid: Validation failed: Users must exist
    
    저장할 데이터는 외부 키워드user_id가 있고 그 안에 정확한 수치가 있습니다. "어? 왜?"곤란합니다.
    이때의 모형은 이렇게 정의되었다.
    app/models/record.rb
    class Record < ApplicationRecord
      belongs_to :users
    end
    
    여기서부터 응급 처리(잘못된 해결 방법)와 정확한 해결 방법을 기재한다.

    1. 응급조치(잘못된 해결 방법)


    다음과 같이 변경되었습니다.
    【Before】
    app/models/record.rb
    class Record < ApplicationRecord
      belongs_to :users
    end
    

    【After】
    app/models/record.rb
    class Record < ApplicationRecord
      belongs_to :users, optional: true
    end
    
    optional: true 관련 모델이 없어도 OK!이렇게 방목한 상태는 일단.검증을 피하다.
    그러나 전혀 의미 없는 갈등 설정인 만큼 결국 응급처치에 그친 셈이다.
    해결책은 많지만 별로 안 좋은 것 같아요.

    2. 해결(설정 오류)


    【Before】
    app/models/record.rb
    class Record < ApplicationRecord
      belongs_to :users, optional: true
    end
    

    【After】
    app/models/record.rb
    class Record < ApplicationRecord
      belongs_to :user
    end
    
    다중 형식
    단수 형식
    belongs_to 연관에 지정된 모델 이름은 단수 형식이어야 합니다.
    Rails 가이드도 잘 썼어요!
    영어로 생각하면 당연하고 부끄럽다optional: true도 필요하지 않으므로 삭제합니다.
    이러면 문제 없어!

    끝말


    끝까지 읽어주셔서 감사합니다
    어쩔 수 없는 설정 오류로 시간을 허비한 만큼 같은 오류로 어려움을 겪는 사람이 있다면 참고하세요

    참조된 웹 사이트(지금까지 지원해 주셔서 감사합니다)


    Active Record 관련 - Rils 설명서

    좋은 웹페이지 즐겨찾기