【发布时间】:2010-09-21 04:30:51
【问题描述】:
我有一个 Scout 模型,除了标准 REST 操作之外,还需要两个操作:check_in 和 check_out。所以我的路线是:
resources :scouts do
member do
get 'check_in'
get 'check_out'
end
end
但我需要向用户显示 show.html,并带有指向签入侦察员或签出侦察员的链接。为了使用相同的 show.html 视图并在 ScoutsController 中仅保留一个显示操作,我将 ?mode=check_in 或 ?mode=check_out 附加到 url 以指定这不是常规显示操作,因此显示“签入”和“签出”链接。
我曾想过创建一个 check_in 和 check_out 资源,但这似乎不适合 REST 模型,因为签入/签出是一项操作而不是资源。
有没有更好的方法来以 REST 方式处理这个问题?
更新:该模式来自具有不同议程(即工作流程)的不同用户。一位用户可能需要显示和编辑 Scout 数据,而另一位用户将只执行 check_in 活动。
但是,执行check_in 活动的用户可能需要进行编辑。例如,执行check_in 活动的用户可能会发现Scout 数据中的错误,通过编辑修复它,然后返回到他们的check_in 活动。通过mode 可以让我确定用户议程。此外,添加mode 允许我只使用一个显示/编辑/等视图并仅显示基于它的适当链接。
我可以将模式放入会话哈希中。无论哪种方式,结果都是一样的。
好处是一个非常简单的用户界面(对于非常简单的用户)。
在我看来,侦察兵是资源,check_in 和 check_out 是行动。但是使用该模式似乎很尴尬。但也许这真的是最好的方法。这是我的问题。
【问题讨论】:
-
如何确定应该显示 check_in 或 check_out 链接?这是侦察模型中的一个字段吗?还是这与当前用户的会话有关?您能否更详细地解释一下 scout、check_in 和 check_out 在现实世界对象中的含义?
-
有一个角色为“check_in”的用户。此人是注册商。我目前有一个只有索引操作的 CheckInController,它允许用户搜索并找到要签入的童子军。 Scout 模型有一个
checked_in标志。这些都与用户会话无关。 HTH
标签: rest ruby-on-rails-3