有一个列出帖子的页面。对于登录用户,将表保留在数据库中的最佳方法是什么,这有助于在他喜欢的帖子上显示“你喜欢这个”。 它类似于Facebook在用户已经喜欢的Feed上显示“你喜欢这个”的方式。
答案 0 :(得分:0)
我的建议是,
创建新表Like(user_id,post_id,liked)
使用此表跟踪用户喜欢的内容。
修改强>
如果要在一个查询中获取所有查询,请使用序列化
表格为Like(user_id,status(type should be :text))
serialize :status
使用它,
like = Like.new
like.user = user
like.status = {liked: post.id}
like.save
详细了解序列化here
答案 1 :(得分:0)
在帖子和用户之间创建HABTM关系,如果愿意,甚至可以调用表格“喜欢”。然后,您将@post.users
列出喜欢此帖子的用户,@user.post
将列出用户喜欢的帖子。
在这种情况下,Join表没有意义,除了两个外键之外,您不需要任何额外的字段。
此外,50多个帖子不应在您的服务器上创建任何类型的负载。数据量非常小。更有可能的问题出在渲染中,而不是代码的后端部分。是的,您可以通过在查询帖子期间急切加载或预加载连接表来在一个查询中获取信息。类似于Post.includes(:users)
或。{
Post.eager_load(:users)