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
'Programming > Ruby On Rails' 카테고리의 다른 글
[Ruby On Rails] Module Mixin (2) - ActiveSupport::Concern (0) | 2023.04.30 |
---|---|
[Ruby On Rails] Module Mixin (1) - include, prepend, extend (0) | 2023.04.18 |
[Ruby On Rails] Eager loading으로 N+1 문제 해결하기 (0) | 2023.04.16 |
[Ruby On Rails] Elasticsearch 검색 템플릿(Search Template) 사용하기 (0) | 2023.03.28 |
[Ruby On Rails] 동시성 제어하기 - ActiveRecord Locking (0) | 2023.03.22 |