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

时间:2011-09-04 18:07:52

标签: ruby-on-rails ruby-on-rails-3 model schema

我有一个用户提交提交的网站,它们都显示在主页上。我想在每个提交中添加一个“隐藏”的按钮...如果用户点击此链接,他们将不再在网站上的任何位置看到提交。

目前我提交的索引操作只是:

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

虽然这显然不起作用。

我有一个很好的数据库架构吗?我可以做的最有效的查询是什么,以确保我不显示隐藏的提交?

谢谢!

2 个答案:

答案 0 :(得分:0)

你应该有3个表:

  1. 提交
  2. 隐藏
  3. 用户
  4. 注意你有多对多关联。现在,只要用户单击按钮隐藏提交,您就可以在表Hidden中使用正确的submission_id和user_id创建一行。然后,在您的控制器中,您可以获取所有提交,而无需用户标记为“隐藏”的ID。

    顺便说一下:要知道你应该从隐藏中实现逆转(如果有人犯了错误或改变了他的想法

答案 1 :(得分:0)

除非我遗漏了某些内容,否则我只需在“提交”模型中添加“隐藏”属性(布尔值)。

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

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

Submission.where(:hidden => false)