我正在构建一个具有多个项目的网络应用程序。通用数据模型是这样的,每个项目都有许多资源,例如文档、寄存器等。大致如下:
class Project < ActiveRecord::Base
has_many :documents, :registers, :employments
has_many :users, :through => :employments
class User < ActiveRecord::Base
has_many :employments
has_many :projects, :through => :employments
class Document < ActiveRecord::Base
belongs_to :project
class Register < ActiveRecord::Base
belongs_to : project
困难来自于路由!!对项目的任何 C UD 操作都将通过命名空间完成。但是,当用户查看项目时,我希望路由中的 project_id 如下所示:
'0.0.0.0:3000/:project_id/documents/
或者
'0.0.0.0:3000/:project_id/register/1/new
我想到了类似的东西:
match '/:project_id/:controller/:id'
我想我要将 project_id 存储在会话中?如果我放弃这些路线以获得更简单的东西,例如:
"0.0.0.0:3000/documents"
然后如何将任何 CRUD 操作绑定到文档或注册到当前项目?当然,我不必将它硬连接到每个控制器中吗?
帮助!