问题标签 [ruby-paranoia]
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 5 在 Paranoia 和 CanCanCan 之间的兼容性受到了损害?
我遇到了与此线程中描述的完全相同的问题:
Rails 5 only_deleted with cancancan #356
我可以访问已删除的记录,如下所示:
但如果我添加load_and_authorize_resource
到我的控制器,它会尝试像这样运行查询:
这将导致错误,因为它不会在 delete_at 不为空的集合上找到具有该 ID 的记录(不是删除的记录,Paranoia gem 的目的)。
如果我禁用load_and_authorize_resource
控制器或该操作,它会解决错误,但它不是解决方案,因为这意味着失去授权控制。
是否有解决此问题的方法,或者是否有一个与 Rails 5 上的偏执狂配合得很好的授权宝石,我可以切换到它?
谢谢你。
ruby-on-rails - 将acts_as_paranoid 与DelayedJob 一起使用?
有人能准确地告诉我如何整合acts_as_paranoid
吗DelayedJob
?我尝试创建一个类Delayed::Backend::ActiveRecord::Job
并添加acts_as_paranoid
到它,但即使我使用初始化程序和require
新类,acts_as_paranoid 似乎也没有做任何事情。
我没有收到任何错误,因此paranoia
似乎已正确安装,并且在成功完成后会干净地删除该作业-这当然是我要防止的。
如果没有人读到这篇文章并立即知道我是怎么搞砸的,那么很高兴尝试任何调试建议。
ruby-on-rails - “创建”不能在 heroku 上使用 ruby 偏执狂
我已经在一个模型(“Stays”)上实现了偏执狂,该模型正在开发中,但不是在 heroku 上的生产中。在 heroku 网站上,我可以看到一个(预计是空的)索引页面,但是当我转到 /stays/new 时,我得到一个错误页面。
检查日志,我发现:
在 app/controllers/stays_controller.rb 中,这里是前 15 行。
在宝石文件中:
在 app/models/stay.rb 中:
自从推到heroku以来,我一直在跑步heroku run rake db:migrate
,但没有运气。知道为什么这是在本地进行开发,而不是在 heroku 上进行生产吗?
ruby-on-rails-5 - 还原递归不会还原连接表中的条目
设置
重现步骤:
- 在配置文件上调用destroy方法。
- degreeholderships 表中的条目标记为 active=NULL 并且已删除_at=timestamp
- 在配置文件上调用恢复方法并通过递归:true
- profile.restore(递归:真)
- degreeholderships 表中的条目保持不变
预期结果:
- 与个人资料相关的学位持有人条目也应恢复。
我尝试使用和不使用 recursive: true 选项运行恢复,并设置 recovery_window 值。所有显示此行为。我还删除了使用活动列的选项并恢复为使用 deleted_at(默认值)。
我想了解这种行为是否是:
- 由于我的设置错误。
- 实际上是预期的行为,如果是这样,请解释为什么这比能够递归地恢复依赖项更可取。
- 是宝石的错误。
ruby-on-rails - 递归还原中的偏执狂
我正在使用 paranoia /acts_as_paranoid gem 软删除我的模型。
我在帖子和评论之间有一对多的关系。他们都是偏执狂,并且摧毁一切都按预期进行。
我的关系是这样设置的:
我正在使用acts_as_commentable_with_threading gem 来发表评论。
以下是说明问题的命令示例:
谢谢!
ruby-on-rails - 与 belongs_to 相关的偏执狂
在我的应用程序中,一个用户has_many :jobs
和一个工作belongs_to :user
。我正在使用 paranoia gem 软删除用户和作业。
假设我有一个用户 Joe,他有一份工作“推送更改”。我可以使用 来查看我的列表页面上的所有工作Job.all
,但是一旦我删除 Joes 的帐户,我就看不到该工作正在使用Job.all
了。
我曾尝试使用Job.with_deleted.all
并尝试取消关联的范围belongs_to :user, -> { with_deleted }
。
生成的 SQL 语句:
ruby-on-rails - 多列索引 vs 单独索引 vs 部分索引
今天在我的 Rails 应用程序上工作时,我注意到 paranoia gem 说应该更新索引以添加deleted_at IS NOT NULL
作为索引创建的位置(github链接)。但是我突然想到,当我确实想要 with_deleted 时,倒置条件不会从索引中受益。
这让我想知道...
我知道这有点迟钝,因为答案显然是“这取决于你需要什么”,但我试图了解多列索引、单独索引和部分索引之间的区别,我的 Web 应用程序由 PostgreSQL 支持。
基本上,我有 2 个要查询的字段:p_id 和 deleted_at。大多数时候我都在查询WHERE p_id=1 AND deleted_at IS NOT NULL
- 但有时我只查询WHERE p_id=1
。很少,我会WHERE p_id=1 AND deleted_at=1/1/2017
。
那么,我是不是更好:
- 在 p_id 上有一个索引,在 deleted_at 上有一个单独的索引?
- 在 p_id 上有一个索引但添加 'where deleted_at IS NOT NULL'?
- 在 p_id 和 deleted_at 上有一个组合索引?
注意:也许我应该提到 p_id 当前是对 p.id 的外键引用。这提醒我,在 Postgres 中,外键是否有必要也有索引(或者它们是否获得了从外键约束派生的索引 - 我已经阅读了关于此的相互矛盾的答案)?
ruby-on-rails - Rails - 2 个用户之间的共享条目 - 独立地为每个用户软删除
我有一个带有 2 个模型的 Rails 5 应用程序:User
&Application
用户可以通过应用程序模型应用到另一个用户
当用户 1 到用户 2 创建应用程序时,两个用户都可以在他们的Application#index
视图中看到它。
每个用户都可以删除一个应用程序,但这不得影响所涉及的第二个用户的可见性。
例子 :
- 用户 1 申请用户 2
- 用户 1 和用户 2 拥有应用程序内部
Application#index
视图 - 用户 1 软删除应用程序
- 用户 1 看不到应用程序
Application#index
- 用户 2 仍然可以在
Application#index
处理这种情况的最正确方法是什么?
- 创建 2 列
sender_deleted
&并用 date +为索引receiver_deleted
填充它们scope {sender_deleted: nil }
- 在 Application 中为每个用户创建一个条目,然后只检索每个用户的条目?
- 另一种方式 ?
第二种方式似乎是正确的,但表中唯一不同的信息是删除日期,所以它似乎有点多余。
请注意,我在我的其他模型中使用 Paranoia gem 进行常规软删除,这在第一种解决方案中是不可能的,但在第二种解决方案中是可能的,因为只需要一列来将用户定义为已删除。
ruby-on-rails - 偏执狂和工厂女孩的软删除
当我在 rspec 中对记录调用 delete 时,它们似乎被永久删除。我认为这与工厂女孩有关。有没有办法用偏执狂、工厂女孩、rails 和 rspec 来测试软删除而不做任何侵入性的事情?
ruby-on-rails - Rails 使用 Paranoia 和 Administrate,有没有办法通过 administrate 为用户删除记录?
我想通过administrate在管理面板上通过偏执狂更改所有已删除的记录。我的问题是我正在寻找一种方法来做这些事情,但直到现在还没有成功
实际上我想要做的是覆盖特定控制器上的 index 方法生成 with Administrate
,以便将所有元素(是否删除)作为当前控制器的资源。像这样:
controllers/admin/foo_controller.rb
但是当我从管理面板创建一个 foo 对象并删除它之后。该记录不再显示,我想让它仍然可见,以便管理员可以更改它。
如果有人有意见使这成为可能,那就太好了。
预先感谢您的帮助。