[Ruby on Rails] DB 컬럼 추가 후 unknown attribute 오류 발생

JNETiii·2024년 12월 3일
0

Ruby on Rails

목록 보기
2/2

배경

나는 ruby on rails 프로젝트와 fastAPI 프로젝트를 운영중이다.
두 프로젝트 모두 동일한 Database를 사용한다.

DB에 관련된 작업은 모두 fastAPI 프로젝트에서 수행한다.

문제 발생

fastAPI 프로젝트에서 alembic을 사용하여 테이블에 컬럼을 추가했다.
컬럼 추가 작업 이후부터 ruby on rails 프로젝트에서 아래와 같은 오류가 발생한다.

unknown attribute 'count' for Post.

문제 분석

먼저, 해당 오류가 발생하는 코드부터 찾았다.

new_post = Post.new(
  @post.attributes.except('id', 'url')
)

해당 코드는 new_post를 새로 생성한다.
new_post의 컬럼값들은 @post의 id, url을 제외하고는 @post와 동일한 컬럼값을 넣어준다.

오류는 @post.attributes.except()에서 발생됐다.

문제 원인

@post.attributes를 조회할 때는 schema.rb 파일을 참조한다.

❓schema 파일이란?

schema 파일에는 가장 최신의 데이터베이스 구조가 명시되어있다.

예시)

  create_table "posts", force: true do |t|
    t.string "title", null: false
    t.string "content", null: false
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

ruby on rails 프로젝트에서 마이그레이션을 수행하면 자동으로 schema 파일이 최신 상태로 업데이트된다.
나는 다른 프로젝트에서 마이그레이션했기 때문에 실제 DB는 정상적으로 최신 상태로 변경되었지만 ruby on rails 프로젝트의 schema 파일은 최신 상태가 아니게 된다.

위에서 말했듯이, @post.attributes를 조회할 때는 schema 파일을 참조한다.
하지만 schema 파일과 실제 DB 구조가 다르기 때문에 해당 오류를 발생하는 것이다.

문제 해결

schema 파일을 최신 상태로 갱신하여 해당 문제를 해결하였다.

> rails db:schema:dump
profile
도전자 | 개발자

0개의 댓글