Rails Concerns는 일반 Ruby 모듈과 달리 ActiveSupport::Concern
을 확장하여 더 깔끔하고 읽기 쉬운 구문을 제공하며 Rails의 내부 지원을 활용합니다. Concerns는 또한 단일 책임 원칙(SRP)을 지원하여 코드의 각 부분이 오직 하나의 역할만 수행하게 합니다. 이를 통해 코드는 유지보수, 테스트, 이해가 용이해집니다.
영상에서는 고급 검색 기능을 Product
와 Account
모델에서 재사용하기 위해 Searchable
Concern을 생성하는 예시를 보여줍니다. Searchable
Concern은 extend ActiveSupport::Concern
을 포함하고, advanced_search
와 같은 클래스 메서드를 정의합니다. 이 Concern은 해당 모델에 include Searchable
한 줄만 추가하면 모든 기능을 사용할 수 있게 하여 중복 코드를 제거하고 모델을 간결하게 만듭니다.
Concerns는 모델뿐 아니라 컨트롤러에서도 활용되며, 인증, 태그 기능, 타임스탬프, 가져오기/내보내기 등 다양한 공유 기능에 적용될 수 있습니다.
그러나 Concerns의 과도한 사용은 코드를 지나치게 추상화하여 이해하기 어렵게 만들 수 있습니다. 순환 종속성이나 다른 모델 스키마와의 충돌도 발생할 수 있습니다. 따라서 Concerns는 단순하고 명확한 책임을 가지며, 명확한 명명 규칙과 주석으로 문서화되어야 합니다. Concerns는 Rails 코드 조직화의 여러 도구 중 하나일 뿐, 모든 문제의 유일한 해결책은 아님을 기억해야 합니다.