複数のプロジェクトを持つWebアプリを構築しています。一般的なデータモデルは、各プロジェクトにドキュメントやレジスタなどの多くのリソースがあるようなものです。
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
ルーティングには難しさがあります!! プロジェクトに対するCUDアクションは、名前空間を介して実行されます。ただし、ユーザーがプロジェクトを表示しているときは、次のようなルートに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アクションをドキュメントにバインドしたり、現在のプロジェクトに登録したりするにはどうすればよいですか?確かに、これをすべてのコントローラーに配線する必要はありませんか?
ヘルプ!