0

我有一个票证系统,其中票证可以待处理、未读、已回复、已关闭等。这些存储在另一个称为“状态”的模型中,并且每个状态都必须通过事先为数据库播种来手动生成。

须藤代码:

//database is seeded and creates various statuses

ticket.new(params here)
ticket.save!
//ticket status automatically set in before_create
//status = Status.find(1); 
ticket.status.description //'unread' to start

I post on it, ticket updates to replied
//ticket status automatically set in before_update
//status = Status.find(3); 
ticket.status.description //'replied'

但这很糟糕,因为当票证自动更新它的状态并且数据库尚未播种(例如在工厂测试中)时,会出现一堆错误。设置它的“正确”方法是什么?

将内容存储在字符串文字中是不好的,但我只是不知道......究竟......

4

1 回答 1

2

如果您还没有,您应该查看 state_machine gem。这可能是您正在寻找的:https ://github.com/pluginaweek/state_machine

您可以通过在要使用状态的表中创建状态列来使用它,然后在模型中设置所需的状态。

您可以使用此 gem 轻松管理状态。如果您需要其他信息或不同的 gem,您可以查看此截屏视频:http ://railscasts.com/episodes/392-a-tour-of-state-machines

最后,他还向您展示了如果您出于某种原因不想使用 gem,如何从头开始创建有限状态机。

于 2013-10-28T17:49:17.180 回答