在使用RESTful资源路由时,是否存在实现用户角色的最佳共识方法?
说我有以下资源:
User has_many Tickets
Event has_many Tickets
Ticket belongs_to Person, Event
Run Code Online (Sandbox Code Playgroud)
然后进一步说我有两种类型的用户:客户和代理商.两者都将登录到系统,但具有基于其角色的不同资源访问和功能.例如:
客户可以访问:
代理可以访问:
以下4种一般方法中哪一种更清洁,更灵活?
角色文件夹中的独立控制器和命名空间中的资源,例如:
namespace "agent" do
resources :events, :tickets, :people
end
namespace "customer" do
resources :events, :tickets, :people
end
Run Code Online (Sandbox Code Playgroud)
按角色分隔控制器,例如:
AgentController
def sell_ticket, etc
CustomerController
def buy_ticket, etc
Run Code Online (Sandbox Code Playgroud)
共享控制器在需要时具有单独的操作,例如:
TicketController
before_filter :customer_access, :only => :buy
before_filter :agent_access, :except => :buy
def buy #accessed by customer to create ticket
def sell #accessed by agent to create ticket
Run Code Online (Sandbox Code Playgroud)
与条件语句共享的操作,例如:
TicketController
def create …Run Code Online (Sandbox Code Playgroud)