У меня проблемы с реализацией статусов для модели. Вероятно, это связано с неправильным дизайном.
Существует модель, которая имеет статус. Может быть несколько экземпляров модели и только несколько предопределенных состояний (например: созданный, обновленный, восстановленный и т. Д.). Для каждого отдельного статуса есть некоторая логика расчета для модели. Например. model.cost()
рассчитывается по-разному для каждого статуса.
Я бы хотел, чтобы ActiveRecord автоматически устанавливал правильные значения model_status_id
при сохранении модели. Я думаю, что в идеальной ситуации я мог бы сделать что-то вроде этого:
model.status = StatusModel.retrieved
и
case status
when renewed
# ...
when retrieved
# ..
end
Думая, что мне нужно сохранить статус в строке модели в базе данных, вот что я получил сейчас:
ModelStatus < ActiveRecord::Base
has_many :models
Model < ActiveRecord::Base
belongs_to :model_status
Однако это вызывает у меня много проблем в коде. У кого-нибудь есть хорошие идеи или шаблоны для этого?