2016-02-18 70 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