postgresql - Rails 4 Posgres 草拟模型和关系。我需要建议

标签 postgresql ruby-on-rails-4 database-design model routes

我对构建应用程序还很陌生,所以我想问一下在这些模型之间建立关系的最佳方法。

文件夹、相册、图片

我将 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/

相关文章:

ruby-on-rails - 在 Mac 上为 Rails 设置 PostgreSQL

postgresql - 截断表后序列不会重置

ruby-on-rails - Ruby zip 3 数组分两步完成

database - 在数据库列中存储分隔列表真的那么糟糕吗?

mysql - 如何处理带有时间戳和特性的数据库设计?

postgresql - Slick 中的编译查询

postgresql - SymmetricDS pk 替代方案

javascript - ruby on rails 中的 Coffeescript 编译错误

ruby-on-rails-4 - 回形针更改 URL/路径

mysql - 我是否正确理解了数据库设计?