我对构建应用程序还很陌生,所以我想问一下在这些模型之间建立关系的最佳方法。
文件夹、相册、图片
我将 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
?
谢谢你的帮助?
最佳答案
如果您有未映射到用户的图像或文件夹,则可以将关系/关联字段留空。换句话说,仅仅因为您定义了一个 has_many 或属于关系,您不一定需要每个图像或文件夹都映射到一个。关联字段(user_id)可以为空,您可以直接访问记录。
要访问非关联图像,您需要一个未嵌套在用户资源下的路由:
get 'images/:id', :to => 'images#show'
get 'images', :to => 'images#index'
或类似的东西:
resources images, :only => [:index, :show]
关于postgresql - Rails 4 Posgres 草拟模型和关系。我需要建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35487968/