gpt4 book ai didi

ruby-on-rails-3 - 如何在 Ruby on Rails 中编写 mark_as_deleted 方法?

转载 作者:行者123 更新时间:2023-12-04 06:59:49 25 4
gpt4 key购买 nike

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

因此,当用户点击“删除”时,相应的操作应将数据标记为已删除,但不会从我的数据库中清除数据。

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

最佳答案

如果你只想显示或隐藏数据,我会在数据库中有一个 bool 值 is_visible 字段。

此外,我不会在您的 View 中评估是否显示此数据,而是将该逻辑放在模型中的 default_scope(在 rails 3 中可用)中。所以像这样(假设你想显示/隐藏 Articles)...

# model
class Article < ActiveRecord::Base
default_scope where(:is_visible => true)
end

显然,您的删除方法应该只是将 is_visible bool 值设置为 false,并且在创建时它应该默认为 true

然后,如果您的数据与其他数据有关系,您只需要小心。在这个例子中,如果你有 Articles 而他们有 Comments 那么你可能不希望 Comments 出现在任何地方,如果 文章被标记为不可见。

关于ruby-on-rails-3 - 如何在 Ruby on Rails 中编写 mark_as_deleted 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com