2016-02-18 36 views
1

我对构建应用程序很陌生,所以我想问一下构建这些模型之间关系的最佳方法。Rails 4 Posgres勾画出模型和关系。我需要建议

文件夹,相册,图片

我使用Rails 4 Postgres的:

我试图创建相册,可容纳多张图片或者是空的,有东西以后增加。相册可能属于0个或更多文件夹,并且文件夹可能包含0个或更多个相册或零个或多个图像。图像可以属于一个文件夹,属于一个相册,通过一个相册属于一个文件夹,或者不属于一个文件夹或一个相册。他们都属于一个用户。

这就是我在脑海中勾画出来的。请让我知道你在想什么:

user 
has_many :folders, :albums, images 

folder 
belongs_to :user 
has_many :albums, :images 

album 
belongs_to :user, :folder 
has_many :images 

images 
belongs_to :user, :folder, :albums 

我感到困惑的是你怎么说CAN HAS_MANY或CAN belong_to,因为图像可以存在的一切之外,除了用户。

此外,路由看起来像这样。我不认为这会工作:

resource :user 
    resource :folder 
    resource :album 
     resource :image 

我有一个很难包装我的头周围的什么会,再次因为一切都可以独立存在,除了用户一切的。

我是否需要对每个项目都有一个user_id引用? 是否需要在任何型号中使用任何belongs_to through

感谢您的帮助?

回答

0

如果您的图像或文件夹没有映射到用户,您可以使关联/关联字段为空。换句话说,仅仅因为你定义了一个has_many或属于关系,你不一定需要每个图像或文件夹映射到一个。关联字段(user_id)可以为空,您可以直接访问记录。

要访问非相关的图像,你将需要用户资源下没有嵌套的路线:

get 'images/:id', :to => 'images#show' 
get 'images',  :to => 'images#index' 

或类似的东西:

resources images, :only => [:index, :show] 
+0

所以,后来的图像可以是独立于任何它属于的其他模型,这是否意味着我的模型可能非常接近正确?这是否也意味着我的路线会起作用? – Lenocam

+0

我*认为*路线将适用于嵌套/关联的模型,但您可能需要添加额外的路线才能访问这些用户的上下文外部。 – errata

+0

我的意图是在所有其他资源一个用户,甚至是图像。这些图像有时需要放在文件夹和相册之外。 – Lenocam