Rails 数据库设计:使用 JSONB 和 PostgreSQL 的相册和无相册图像
Rails DB design: Albums and albumless images with JSONB and PostgreSQL
我正在设计一个历史建筑网站,用户可以在其中使用 Shrine 上传多张图片。我正在尝试提出一个数据库设计,使我能够满足我的这些要求:
- 用户可以创建相册。此相册必须属于建筑物
- 一个相册可以包含任意数量的图片
- 问题:有些图片不一定属于相册。
我应该能够上传无相册图像并将其用于建筑物描述或博客文本中,而将其放入任何相册都没有意义。 Images
table 中不会有任何 album_id
列。图库将从图像的 JSONB 列中获取图像 ID。
我能想到的解决方案:
多态图像。 这将在图像 table 中插入列 imageable_type
和 imageable_id
以存储父模型及其记录 ID。要存储此图像所属相册的 ID,我可以避免在 Images
table 中使用数据库列 album_id
并利用 Images
[=56] 中现有的 JSONB 列=] 而不是把它放在那里(我把图片描述和其他东西放在那里,我想保持这种状态)。
优点:imageable_type
可以是 Building, Blog, Album
- 它涵盖了我需要的一切。
缺点:感觉有点凌乱和奇怪
根本不使用任何隐式 ActiveRecord 关系(没有 has_many、belongs_to)因为我没有 album_id
用于博客和建筑物描述中的单个图像.使用 JSONB 列中的图像 ID 手动加入。
我非常感谢这里的任何设计想法。集思广益!
我使用了多态图像,以供大家参考。如果将图像添加到画廊,其 imageable_type 是画廊,可以很好地将它们添加到适当的画廊。
感谢您的帮助。
我正在设计一个历史建筑网站,用户可以在其中使用 Shrine 上传多张图片。我正在尝试提出一个数据库设计,使我能够满足我的这些要求:
- 用户可以创建相册。此相册必须属于建筑物
- 一个相册可以包含任意数量的图片
- 问题:有些图片不一定属于相册。
我应该能够上传无相册图像并将其用于建筑物描述或博客文本中,而将其放入任何相册都没有意义。Images
table 中不会有任何album_id
列。图库将从图像的 JSONB 列中获取图像 ID。
我能想到的解决方案:
多态图像。 这将在图像 table 中插入列
imageable_type
和imageable_id
以存储父模型及其记录 ID。要存储此图像所属相册的 ID,我可以避免在Images
table 中使用数据库列album_id
并利用Images
[=56] 中现有的 JSONB 列=] 而不是把它放在那里(我把图片描述和其他东西放在那里,我想保持这种状态)。
优点:imageable_type
可以是Building, Blog, Album
- 它涵盖了我需要的一切。
缺点:感觉有点凌乱和奇怪根本不使用任何隐式 ActiveRecord 关系(没有 has_many、belongs_to)因为我没有
album_id
用于博客和建筑物描述中的单个图像.使用 JSONB 列中的图像 ID 手动加入。
我非常感谢这里的任何设计想法。集思广益!
我使用了多态图像,以供大家参考。如果将图像添加到画廊,其 imageable_type 是画廊,可以很好地将它们添加到适当的画廊。
感谢您的帮助。