나는 부울 값인 is_company
에 따라 개인 또는 회사가 될 수있는 User라는 모델을 가지고 있습니다. 사용자가 회사 인 경우 company_name
에 이름이 저장됩니다. 사용자가 개인 인 경우 first_name
및 last_name
은 이름을 저장합니다.ActiveRecord에서 SELECT CASE 문을 레일스 모델 default_scope로 사용
대다수의 경우 사용자를 last_name
또는 company_name
으로 정렬하도록 기본 설정되어 있으므로 사용자 모델에 default_scope를 사용하고 있습니다.
그러나 SQLLite에서 작동하는 방식으로는 데이터베이스에 무관심하지 않습니다. 아무도 나에게이 사실을 case 문에서 "true"의 매개 변수를 받아들이도록 리펙토링 할 수있는 방법을 알려 주실 수 있습니까?
default_scope select('users.*')
default_scope select('CASE WHEN is_company = "t" THEN company_name ELSE last_name END AS sort_name')
default_scope order('sort_name ASC')
고마워요!
이 두 영역을 분리해야할까요? – Bohdan