Я создаю веб-приложение, которое имеет несколько проектов. Общая модель данных такова, что каждый проект имеет много ресурсов, такие как документы, регистры, etc.Something вдоль линий:Rails 3 - сеанс и маршрутизация!
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 действия документов или регистров текущего проекта ?? Неужели мне не нужно жестко подключать это к каждому контроллеру?
ПОМОЩЬ!
Это звучит хорошо - я начал работать в направлении решения с использованием сессий, но теперь я начинаю всерьез вторая догадку. Чтобы избежать тяжелого гнезда, я полагаю, что тогда я должен начать мелкие вложения моих ресурсов? то есть. для пересмотра документов, типов документов и т. д. –
Да, вы не должны переусердствовать вложенной маршрутизации. Вам просто становится сложнее создавать маршруты. Когда вы хотите что-то вложить в документы, вы уже знаете, к какому проекту он принадлежит через документ.Поэтому не нужно больше вставлять его в вашу маршрутизацию. Но вы можете это сделать. Это твой выбор. Просто старайтесь держаться подальше от проблем для этих проблем. ;) – RobinBrouwer