데이터베이스의 열에 해당하는 모델에 열거 형이 있습니다.
enum
외모가 좋아 :
enum sale_info: { plan_1: 1, plan_2: 2, plan_3: 3, plan_4: 4, plan_5: 5 }
정수 값을 어떻게 얻을 수 있습니까?
난 노력 했어
Model.sale_info.to_i
그러나 이것은 0 만 반환합니다.
답변
열거 형이있는 클래스에서 열거 형의 정수 값을 가져올 수 있습니다.
Model.sale_infos # Pluralized version of the enum attribute name
다음과 같은 해시를 반환합니다.
{ "plan_1" => 1, "plan_2" => 2 ... }
그런 다음 Model
클래스 인스턴스의 sale_info 값을 사용하여 해당 인스턴스 의 정수 값 에 액세스 할 수 있습니다 .
my_model = Model.find(123)
Model.sale_infos[my_model.sale_info] # Returns the integer value
답변
다음과 같이 정수를 얻을 수 있습니다.
my_model = Model.find(123)
my_model[:sale_info] # Returns the integer value
Rails 5 업데이트
rails 5의 경우 위의 메서드는 이제 문자열 값을 반환합니다.
지금 볼 수있는 가장 좋은 방법은 다음과 같습니다.
my_model.sale_info_before_type_cast
Shadwell의 답변은 레일 5에서도 계속 작동합니다.
답변
레일 <5
또 다른 방법은 다음을 사용하는 것입니다 read_attribute()
.
model = Model.find(123)
model.read_attribute('sale_info')
레일> = 5
당신이 사용할 수있는 read_attribute_before_type_cast
model.read_attribute_before_type_cast(:sale_info)
=> 1
답변
내 짧은 대답은 Model.sale_infos[:plan_2]
당신이 가치를 얻고 싶다면plan_2
답변
Rails 5.1 앱에서 동일한 작업을 수행하기 위해 Model에 메서드를 작성했습니다.
케이스를 준비하고, 이것을 모델에 추가하고 필요할 때 객체에서 호출하십시오.
def numeric_sale_info
self.class.sale_infos[sale_info]
end