У меня есть модель User, которая может быть индивидуальной или корпоративной, в зависимости от логического значения, is_company
. Если пользователь является компанией, company_name
сохраняет имя; если пользователь - физическое лицо, first_name
и last_name
сохраняют свое имя.
В подавляющем большинстве случаев я хочу, чтобы пользователи сортировались по last_name
ИЛИ company_name
по умолчанию, поэтому я использую default_scope в своей модели User.
Однако то, как я это понимаю, даже при том, что оно работает для SQLLite, не зависит от базы данных. Может кто-нибудь дать мне знать, как я могу реорганизовать это, чтобы принять параметр "true" в выражении case?
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')
Спасибо!