使用 Rails 5 创建 collections 的帖子(如在 Pinterest Boards 中)
Creating collections of posts with Rails 5 (as in Pinterest Boards)
我有 500 多个 posts 并且增长迅速。我想为用户提供一个功能来创建 collections [title, description, posts] 并将 posts 分配给他们。 1 post 可以属于来自不同用户的多个 collection。
示例:
- 用户 A 创建了一个名为 "DARK DESIGNS"
的 collection
- 用户 A 单击 post/show 页面中的 "add to collection" 按钮并选择她自己的 "Dark Design" collection
- 用户 A 进入另一个 post 并将更多 post 分配给 "Dark Design"
- 用户 A 在她的个人资料
中看到了她 collection 的列表
问题:
我应该如何构造此 collection 功能?我应该只做脚手架collections吗?我应该如何在数据库中保存 post id,只是在用逗号分隔的字段中?
谢谢
我需要用户能够创建 collection 并将 1 post 分配给多个 collection。
我的数据库结构应该是这样的:
现有table
table[posts]
- id
- 标题
- 图片
- 更多字段
table [用户]
- id
- 用户名
- 更多字段
新建tables
table[collections]
- id
- 标题
- 描述
- user_id
table [collections_posts]
- id
- post_id
- collection_id
我认为您需要一个带有 title
和 description
字段的单独 Collection
模型,以及用于 has_many
关联的附加 CollectionsPost 模型。
class CollectionsPost < ApplicationRecord
belongs_to :collection
belongs_to :post
end
class Collection < ApplicationRecord
has_many :collections_posts
has_many :posts, through: :collections_posts
end
class Post < ApplicationRecord
has_many :collections_posts
has_many :collections, through: :collections_posts
end
也许 Collection 应该属于用户,如果你想在个人资料页面上显示用户列表 collections。
我有 500 多个 posts 并且增长迅速。我想为用户提供一个功能来创建 collections [title, description, posts] 并将 posts 分配给他们。 1 post 可以属于来自不同用户的多个 collection。
示例:
- 用户 A 创建了一个名为 "DARK DESIGNS" 的 collection
- 用户 A 单击 post/show 页面中的 "add to collection" 按钮并选择她自己的 "Dark Design" collection
- 用户 A 进入另一个 post 并将更多 post 分配给 "Dark Design"
- 用户 A 在她的个人资料 中看到了她 collection 的列表
问题:
我应该如何构造此 collection 功能?我应该只做脚手架collections吗?我应该如何在数据库中保存 post id,只是在用逗号分隔的字段中?
谢谢
我需要用户能够创建 collection 并将 1 post 分配给多个 collection。
我的数据库结构应该是这样的:
现有table
table[posts]
- id
- 标题
- 图片
- 更多字段
table [用户]
- id
- 用户名
- 更多字段
新建tables
table[collections]
- id
- 标题
- 描述
- user_id
table [collections_posts]
- id
- post_id
- collection_id
我认为您需要一个带有 title
和 description
字段的单独 Collection
模型,以及用于 has_many
关联的附加 CollectionsPost 模型。
class CollectionsPost < ApplicationRecord
belongs_to :collection
belongs_to :post
end
class Collection < ApplicationRecord
has_many :collections_posts
has_many :posts, through: :collections_posts
end
class Post < ApplicationRecord
has_many :collections_posts
has_many :collections, through: :collections_posts
end
也许 Collection 应该属于用户,如果你想在个人资料页面上显示用户列表 collections。