【问题标题】:Rails 4 Posgres sketching out models and relationships. I need adviceRails 4 Postgres 勾勒出模型和关系。我需要建议
【发布时间】:2016-05-31 00:04:05
【问题描述】:

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

文件夹、相册、图片

我正在使用带有 Postgres 的 Rails 4:

我正在尝试创建可以容纳多张图像或为空的相册,以便以后添加一些内容。相册可以属于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 belongs_to,因为图像可以存在于除了用户之外的一切之外。

另外,路由会是什么样子。我认为这行不通:

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

我很难理解会发生什么,因为一切都可以独立于除用户之外的其他一切而存在。

我是否需要为每个项目提供 user_id 参考? 我需要在任何模型中使用任何belongs_to through 吗?

感谢您的帮助?

【问题讨论】:

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


    【解决方案1】:

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

    要访问非关联图像,您需要一个未嵌套在用户资源下的路由:

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

    或类似的东西:

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

    【讨论】:

    • 那么,一个图像可以独立于它所属的任何其他模型,这是否意味着我的模型可能非常接近正确?这是否也意味着我的路线可以工作?
    • 认为这些路由适用于嵌套/关联模型,但您可能需要添加其他路由才能在用户上下文之外访问这些路由..跨度>
    • 我的意图是在用户的上下文中拥有所有其他资源,甚至是图像。图片有时需要位于文件夹和相册之外。
    猜你喜欢
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 2021-06-14
    • 2015-03-11
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多