Ruby on rails 3 如何在RubyonRails中编写mark_as_deleted方法?

Ruby on rails 3 如何在RubyonRails中编写mark_as_deleted方法?,ruby-on-rails-3,Ruby On Rails 3,我想写一个方法,它应该像任何Rails默认控制器中的destroy方法一样工作,但不应该真正删除数据。相反,它应该设置一个标志或一些我可以在视图中评估的东西,以不再显示这些数据 因此,当用户单击“删除”时,相应的操作应该将数据标记为已删除,而不是从我的数据库中清除数据 写这种方法最优雅的方式是什么?我正在使用Rails 3。在我的一些应用程序中,我在名为状态的内容类型中添加了一列,可以是“发布”、“草稿”或“删除”。这样,用户就可以起草或删除已发布的项目,而不会弄乱索引视图 就优雅而言,它可能不

我想写一个方法,它应该像任何Rails默认控制器中的destroy方法一样工作,但不应该真正删除数据。相反,它应该设置一个标志或一些我可以在视图中评估的东西,以不再显示这些数据

因此,当用户单击“删除”时,相应的操作应该将数据标记为已删除,而不是从我的数据库中清除数据


写这种方法最优雅的方式是什么?我正在使用Rails 3。

在我的一些应用程序中,我在名为
状态的内容类型中添加了一列,可以是“发布”、“草稿”或“删除”。这样,用户就可以起草或删除已发布的项目,而不会弄乱索引视图


就优雅而言,它可能不是最好的,但我只是在内容类型上创建了一个
new\u draft
方法,它创建了一个状态设置为“draft”的新对象。然后,当用户发布他们的草稿时,我调用一个
post
方法,该方法将
状态设置为“post”。发布后,如果用户删除了他们的项目,我会调用
remove
方法(您猜对了!)将
状态设置为“removed”。

如果您只想显示或隐藏数据,我会在数据库中设置一个布尔
字段

另外,我没有在您的视图中评估是否显示这些数据,而是将该逻辑放在模型中,放在
default\u范围中(可在rails 3中获得)。所以类似这样的事情(假设您想显示/隐藏
文章

#模型
类文章true)
结束
显然,您的delete方法应该只将
is_visible
布尔值设置为
false
,创建时它应该默认为
true


然后,如果您的数据与其他数据有关系,您只需要小心。在本例中,如果您有
文章
并且他们有
注释
,那么如果
文章
标记为不可见,您可能不希望
注释
显示在任何地方。

范围必须在模型中,而不是在控制器中。但它的工作原理是这样的:-)。谢谢。哦,是的,型号不是控制器!
# model
class Article < ActiveRecord::Base
  default_scope where(:is_visible => true)
end