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의 특정 컨텍스트에 국한된 기능입니다.