У меня есть Rails модель под названием проекты:Как расширить пользовательский метод рельсов?
class Project < ActiveRecord::Base
, который имеет множество переключателей, такие как активные, начал, платный и т.д.
Я тогда способ, чтобы вернуть статус человека читаемый формат:
def status
return 'Pending' if self.pending?
return 'Started' if self.started
return 'In Review' if self.in_review?
return 'Approved' if self.approved
return 'Active' if self.active
end
Сейчас у меня есть еще один метод, который называется status!
, который возвращает ту же информацию, но и в виде символа, который является неэффективным в моем сознании:
def status
return :pending if self.pending?
return :started if self.started
return :awarded if self.awarded
return :in_review if self.in_review?
return :approved if self.approved
return :active if self.active
end
То, что я хотел бы сделать, это нечто большее, чем status.to_sym
, но не может понять, как это осуществить.
Любые мысли?
Похоже, что он может быть реализован как [конечный автомат] (https://github.com/troessner/transitions). – Stefan
Если эти статусы являются взаимоисключающими, почему бы не иметь одно поле «статус» и не использовать ли ваше представление группу переключателей или поле выбора для установки статуса? –