问题标签 [acts-as-paranoid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Rails act_as_paranoid - belongs_to 不与 with_deleted 一起使用
我有两个具有belongs_to - has_many 关系的模型,您可以在下面看到(我只包含了与这个问题相关的代码部分,因为模型很大):
根据 Github 上的自述文件(https://github.com/goncalossilva/acts_as_paranoid),这应该有效:
但是,如果我删除测试周期的父产品并尝试通过 test_cycle.product 访问它(假设 test_cycle 和 product 对象都存在),它会返回 nil(即使模型中包含 with_deleted: true !) .
如果我在与已删除产品相同的 test_cycle 上调用 test_cycle.product_title,它会运行查询“SELECT products
.* FROM products
WHERE products
. id
= 1 LIMIT 1”并且我收到运行时错误:“RuntimeError: TestCycle#product_title delegated to product.title,但产品为零”。
但是,如果我直接在数据库中运行查询,则会找到产品(因为它并没有真正被删除,而只有一个由acts_as_paranoid 设置的 deleted_at 字段)。
因此,似乎忽略了产品模型中的“with_deleted:true”。知道为什么会这样吗?或者还有其他原因导致这不起作用吗?
我希望我能说清楚,如果没有,请询问,我很乐意提供更多信息。谢谢!
ruby-on-rails - friendly_id 和acts_as_paranoid 创建重复的蛞蝓
我目前在模型上使用acts_as_paranoid 和friendly_id (5.0.1),当我销毁模型并尝试创建一个新模型时,它会生成与我得到的相同的蛞蝓:
我需要以某种方式获取检查 slug 是否已经存在的代码,检查所有对象的范围,而不仅仅是未删除的对象。
with_deleted
在检查 slug 是否已经存在时,我如何才能使用友好ID。我应该注意,我也在使用 slug 历史,这可能会使事情进一步复杂化。
深入挖掘后,我意识到由于我使用的是历史记录,所以当对象只是被软删除时,slug 被完全删除:
所以,我只需要弄清楚如何防止这种情况发生,我应该没问题,因为unscoped
在尝试查找有效 slug 时,它看起来像friendly_id 代码本身已经在使用。
ruby-on-rails - Rails4 paranoid2垃圾实现
问题已解决,并且不在我指责的 Rails 路由器上。我希望这对想要使用 paranoid2 gem 实现垃圾箱功能的人有所帮助。
我正在使用 paranoid2 gem(就像作为偏执狂,但用于 Rails4)来保护我的数据不被意外删除,这工作正常,我正在尝试为我的应用程序创建垃圾箱。它应该显示标记为已删除(完成)的内容,提供恢复数据的方法(待办事项),永久删除(完成)并清空整个垃圾箱(这就是问题所在)。
那些我工作正常的路线:
我还有一个,但它不能按我的意愿工作:
对我来说看起来不错,因为它使用 DELETE,不需要 :id 参数,并且应该路由到我的垃圾控制器.rb 中的垃圾#destroy_all:
但是当我尝试到达那里时,我最终遇到了错误:
为什么我最终会采取“破坏”行动?..并且destroy和destroy_all都有错误
这是我的路线.rb:
问题已经解决了
是我在垃圾控制器.rb 中做的一件有趣的事:
解决方案:
paranoid2 提供destroy_all!这样的方法:
ruby-on-rails - RSpec:paranoid2 - 无法修改冻结的哈希
我正在为使用paranoid2 gem的模型进行 RSpec 测试。这是某种偏执狂或acts_as_paranoid - 用它自己的版本覆盖 .delete 和 .destroy 以及其他一些,这些版本将数据标记为已删除而不是删除它,直到你用(forced: true)
参数强制它。
我的应用程序工作得很好,我只有 rspec 有问题。
规格/模型/slide_spec.rb:
rspec 输出:
/app/model/slide.rb:
ruby-on-rails-3.2 - 未定义的方法“偏执狂?” 对于零:NilClass
我gem 'paranoia', '~> 1.0'
在我的rails 3.2.x
应用程序中使用。安装的偏执狂版本是 1.3.3
当我进行递归时,我得到了那个错误:真的我试过了
和
我得到同样的错误。
ruby-on-rails-3.2 - 偏执狂宝石恢复有一个依赖破坏不起作用
我在用
我注意到has_one :model, dependent: :destroy
没有恢复。
比方说。。
如果我做..
将恢复用户及其帖子,但不会恢复个人资料。
我能做些什么来让它发挥作用吗?
顺便说一句,我使用的是 Paranoia 的分叉版本,因为我无法获得这个版本https://github.com/radar/paranoia/blob/rails3/lib/paranoia.rb#L105
ruby-on-rails - 在使用偏执狂恢复记录后更新计数器缓存列 (acts_as_paranoid)
我的模型中有一个counter_cache
专栏。我acts_as_paranoid
用于这个模型(偏执狂宝石)。恢复记录时如何更新关联记录的计数器缓存列?
ruby-on-rails - 为什么acts_as_paranoid 会破坏我的模型?
我最近在我的项目中添加了“偏执狂”宝石User model
。该模型还使用"has_secure_password"
; 直到我把它放在"acts_as_paranoid"
我的User model
. 现在我得到以下参数错误:
任何想法将不胜感激。
这是我的用户模型:
这是我的会话助手:
ruby-on-rails - 作为偏执狂不恢复记录
我试图从我的管理模式中恢复一个对象,但它不起作用
任何想法?
ruby-on-rails - Rails act_as_paranoid 迁移问题
我对 Devise 和 paranoia(acts_as_paranoid) gem 有一个复杂的问题。我的用户模型比较简单:
我首先添加了 Devise gem,没有可确认的选项。然后我后来在此迁移中添加了可确认选项:
到目前为止没有问题。然后我将 Paranoia gem 和acts_as_paranoid
行添加到 User 模型中。我的数据库在当前状态下很好,但我正在尝试重置我的数据库以将其与生产数据同步,这就是我遇到问题的地方。当我执行 db:reset 时,上述迁移失败:
问题是我的模型包含一个acts_as_paranoid
仅对当前数据库快照有效的指令。如果我回滚到以前的数据库快照User::deleted_at
不存在,偏执狂 gem 仍会尝试仅更新未删除的对象,并且我的查询失败。
关于处理这种情况的优雅方式有什么想法吗?