繁体   English   中英

允许用户在Rails 3中隐藏提交

[英]Allowing users to hide submissions in Rails 3

我有一个网站,用户可以在其中提交提交,并且所有提交都显示在主页上。 我想在每个提交内容上显示“隐藏”的小按钮...如果用户单击此链接,他们将不再在网站上的任何位置看到该提交内容。

目前,我对提交的索引操作很简单:

def index
  @submissions = Submission.order("created_at DESC")
end

我的计划是创建一个隐藏的模型,如下所示:

rails g model hidden user_id:integer submission_id:integer

然后,当用户隐藏某些内容时,将创建一个隐藏的模型实例。 然后,我将不得不将控制器更新为:

def index
  @submissions = Submission.order("created_at DESC").includes("hidden").where("hiddens.user_id IS NULL")
end

虽然这显然行不通。

我是否为此拥有良好的数据库架构? 为了确保我不显示隐藏的提交内容,最有效的查询是什么?

谢谢!

您应该有3个表:

  1. 投稿
  2. 用户

请注意,您有多对多关联。 现在,每当用户单击按钮以隐藏“提交”时,您都将在表Hidden中创建一行,并带有正确的commit_id和user_id。 然后,在您的控制器中,您可以获取所有未包含用户标记为“隐藏”的ID的提交。

顺便说一句:请注意,您应该实现隐藏的反向(以防有人犯错或改变主意0)

除非我错过了任何事情,否则我只会向“提交”模型(布尔值)添加一个“隐藏”属性。

当用户单击“隐藏”链接时,将属性设置为true。

然后,您只需查找标志设置为false的提交即可:

Submission.where(:hidden => false)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM