2013-04-24 119 views
0

我的应用程序中的数据相当的URL的结构为:Rails的嵌套的资源,为用户

  • 组织有用户
  • 组织有消息
  • 组织有网站

我通常会使用嵌套资源来做到这一点RESTfully:

resources :organizations do 
    resources :users 
    resources :messages 
    resources :sites 
end 

这给了我喜欢的网址:

/organizations/12/messages 
/organizations/12/sites 

这些罗嗦网址,非常适合当管理员需要为组织创造一个消息,因为URL包含组织ID。

然而,我想展现普通用户相当的URL,例如:

/messages 
/sites 

有没有办法别名这些简洁的URL与/organizations/{current_user.organization.id}/*?

+0

你是什么意思由/organizations/{current_user.organization.id}/*? – 2013-04-24 13:34:47

+0

你的意思是你想让你的管理员用户可以看到他们是很多组织,普通用户看不到它? – Awea 2013-04-24 13:41:10

+0

@Awea:是的 - 我希望管理员能够为所有组织添加消息和更改网站,因此在这种情况下较长的网址很有用。 – Brian 2013-04-24 14:04:37

回答

0

您需要一种方法来传递组织标识。 举例来说,如果你有谁属于组织和用户已登录用户, 您可以通过CURRENT_USER获得组织ID如下:

class MessageController < ApplicationController 
before_filter :get_organization 
# ... 
private 
    def get_organization 
    @organization = current_user.organization 
    end 
end 

而且,在你的路线,你可以添加:

resources :messages 
resources :organizations do 
    resources :messages 
end 

还有其他解决方案,但它取决于如何获得组织ID。