alias
alias
는 Ruby의 핵심 키워드로, 기존 메서드나 전역 변수에 새로운 이름을 부여할 때 사용됩니다. 이 키워드는 이름 사이에 쉼표를 사용하지 않으며, 인스턴스 메서드 내부, 클래스 레벨, 또는 클래스나 모듈 외부 등 어떤 스코프에서도 사용될 수 있다는 특징이 있습니다. 그러나 alias
는 정적인 값에만 적용되므로, 동적인 이름을 사용하려면 별도의 워크어라운드가 필요합니다. alias
를 사용할 경우, 새로운 메서드 복사본은 alias
가 정의된 클래스에 생성됩니다. 이는 상속 관계에서 자식 클래스가 부모 클래스의 alias
를 호출하더라도, 실제 메서드 복사본은 alias
가 선언된 부모 클래스에 위치하게 됨을 의미합니다.
alias_method
alias_method
는 Module
클래스에 속하는 메서드입니다. 이 메서드는 모듈이나 클래스 내부에서만 호출되어야 하며(인스턴스 메서드 내부에서는 불가), alias
와 달리 이름 사이에 쉼표를 사용합니다. alias_method
의 가장 큰 장점은 동적인 인수를 쉽게 전달할 수 있다는 점입니다. 이는 런타임 시 self
가 무엇인지에 따라 새로 정의되는 메서드가 달라질 수 있음을 의미합니다. alias_method
는 새로운 메서드 복사본을 런타임에 이를 호출하는 객체에 생성합니다. 따라서 부모 클래스에서 alias_method
를 정의하고 자식 클래스에서 이를 호출하면, 자식 클래스 인스턴스에서만 해당 별칭 메서드를 사용할 수 있게 됩니다. 이는 alias
와는 다른 중요한 동작 방식입니다.
alias_attribute
alias_attribute
는 Rails 프레임워크에서 제공하는 편의 메서드로, 특히 Active Record 모델의 속성 별칭을 지정하는 데 사용됩니다. 이는 게터(getter), 세터(setter), 그리고 쿼리 메서드(예: attribute?
)를 포함한 모든 관련 메서드에 별칭을 부여합니다. alias_attribute
는 데이터베이스 컬럼 이름과 ActiveModel 메서드 이름이 달라야 할 때 유용하며, 예를 들어 데이터베이스 구조 변경을 계획하거나 의미론적으로 더 적절한 이름이 필요할 때 활용됩니다. 이는 alias
나 alias_method
와는 달리 Rails의 특정 컨텍스트에 국한된 기능입니다.