본문 바로가기
Programming/Ruby On Rails

[Ruby On Rails] enum 경고 문구 - Overwriting existing method

by 가론노미 2023. 3. 26.

Ruby On Rails에서 enum은 자동으로 필드의 허용 값을 기반으로 하는 스코프를 제공한다.

이때 enum으로 정의한 값이 다른 라이브러리에서 사용 중이었고 아래와 같은 경고 문구를 보게 되었다.

Creating scope :open. Overwriting existing method .open.

모델에서 정의한 enum 필드의 스코프가 다른 open 메서드를 덮어쓰고 있다고 한다.

 

모델에서 enum 선언 이전에 undef_method를 통해 해결할 수 있다.

  class << self; undef_method :open; end
  enum status: { open: 0, closed: 1 }

 

singleton_class 메소드를 통해 더 보기 좋게 코드 작성이 가능했다.

singleton_class.undef_method :open

 

<참고>

https://api.rubyonrails.org/v5.1/classes/ActiveRecord/Enum.html

https://github.com/rails/rails/issues/31234