我想编写一个方法,它应该像任何Rails默认控制器中的destroy方法一样工作,但不应该真正删除数据.相反,它应该设置一个标志或我可以在我的视图中评估的东西,以便不再显示这些数据.
因此,当用户单击"删除"时,相应的操作应将数据标记为已删除但不从数据库中清除数据.
编写这种方法最优雅的方法是什么?我正在使用Rails 3.
如果您只想显示或隐藏数据,我将is_visible在数据库中有一个布尔字段.
此外,不是在您的视图中评估是否显示此数据,而是将该逻辑放入模型中default_scope(在rails 3中可用).这样的事情(假设你想显示/隐藏Articles)......
# model
class Article < ActiveRecord::Base
default_scope where(:is_visible => true)
end
Run Code Online (Sandbox Code Playgroud)
显然,你的delete方法应该只将is_visibleboolean 设置为false创建它应该默认为true.
然后,您只需要小心,如果您的数据与其他数据有关系.在这个例子中,如果你有Articles,那么他们Comments可能你不希望它Comments出现在任何地方,如果Article标记为不可见.
| 归档时间: |
|
| 查看次数: |
1110 次 |
| 最近记录: |