【问题标题】:how to NOT search active record in database如何不在数据库中搜索活动记录
【发布时间】:2015-03-25 05:13:38
【问题描述】:

我是 RoR 的新手。我遇到了一个问题:某些活动记录可能不需要在数据库中搜索(假设它们已过期)。我不想从数据库中删除它,因为它与其他模型相关联。此外,由于它已过期,我不希望它被更新。有什么办法可以在 Rails 中处理这种情况?

【问题讨论】:

    标签: ruby-on-rails database activerecord


    【解决方案1】:

    一个用于添加软删除的 Rails 插件。

    这个 gem 可以用来隐藏记录而不是删除它们,使它们以后可以恢复。

    https://github.com/ActsAsParanoid/acts_as_paranoid

    【讨论】:

    • 非常感谢。这颗宝石也是 Bjoernsen 推荐的。
    【解决方案2】:

    有不同的方法。但我建议你使用https://github.com/radar/paranoia

    你可以在这里找到一个好的截屏视频:https://gorails.com/episodes/soft-delete-with-paranoia

    添加到您的应用程序非常容易。只需将 gem 添加到您的 Gemfile 中,然后将 acts_as_paranoid 添加到您的模型中。

    【讨论】:

    • 谢谢比约恩森。你推荐的演员很有帮助。
    【解决方案3】:

    您的问题

    1. 避免查询数据的子集: *为此应该使用 ActiveRecord 的范围。具体使用默认范围。参考这里http://api.rubyonrails.org/classes/ActiveRecord/Scoping/Default/ClassMethods.html。顺便说一句,这是我遇到的软删除 gem 用来隐藏软删除记录的机制
    2. 如何防止更新记录: 不知道你的意思。您不打算使用的记录会(自动?)更新吗?

    【讨论】:

    • 谢谢西雅图。似乎软删除是我正在寻找的方法。将尝试在我的应用程序中添加 gem。至于问题2,现在我仍然可以使用update(/edit)方法来更改数据库,即使它已经过期了。如果使用偏执狂宝石可能会有所不同。我先试试看。
    • 考虑使用“kakurenbo-puti”代替偏执狂。前者不会覆盖 ActiveRecord 方法。这为您提供了更多的灵活性。
    猜你喜欢
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 2012-03-10
    • 1970-01-01
    相关资源
    最近更新 更多