RESTful处理这个问题的最佳方法

时间:2010-09-21 04:30:51

标签: rest ruby-on-rails-3

我有一个Scouts模型,除了标准的REST动作check_in和check_out之外,还需要两个动作。所以我的路线是:

resources :scouts do
  member do
    get 'check_in'
    get 'check_out'
   end
end

但是我需要向用户显示show.html,其中包含指向scout或check_out侦察的链接。为了利用相同的show.html视图并在ScoutsController中只保留一个show动作,我将?mode=check_in?mode=check_out附加到url以指定这不是常规的show动作,因此显示“Check”在“和”签出“链接。

我考虑过创建一个check_incheck_out资源,但这似乎不适合REST的模型,因为签入/签出是一个操作而不是资源。

有没有更好的方法来处理这个RESTful?

更新:该模式来自具有不同议程(即工作流程)的不同用户。一个用户可能需要显示和编辑Scout数据,而另一个用户只能执行check_in个活动。

但是,执行check_in活动的用户可能需要进行编辑。例如,执行check_in活动的用户可能会发现Scout数据中的错误,通过编辑进行修复,然后返回其check_in活动。通过mode可以让我确定用户议程。此外,添加mode允许我只使用一个show / edit / etc视图,只显示基于它的相应链接。

我可以将模式放在会话哈希中。无论哪种方式,结果相同。

好处是一个非常简单的用户界面(对于非常简单的用户)。

我觉得Scout是资源,而check_incheck_out就是行动。但使用该模式似乎很尴尬。但也许它真的是最好的方式。那是我的问题。

1 个答案:

答案 0 :(得分:0)

在我看来check_in和check_out与注册有关,所以我认为你需要另一个资源进行注册。 check_in将映射到create,check_out将映射到destroy。

  resources :registrations

  match 'check_in', :to => "registrations#create", :as => "check_in"
  match 'check_out', :to => 'registrations#destroy', :as => "check_out"