有没有人知道一个gem同时软删除数据库中的记录(只是将它们标记为已删除而不是实际删除)和...
...当你在任何类型的查找中自动省略那些已删除的记录而不使用任何特殊的用户定义范围.例如,这一切都发生在宝石中.
干杯!
我读过很多关于软删除和存档的内容,并看到了所有的优点和缺点。我仍然对哪种方法最适合我的情况感到困惑。我将使用帖子和评论的概念来看看是否可以更容易地解释它
Post -> Comments
Post.all
Outside RSS Feeds -> Post -> Comments
RSSFeed.posts (Return the ones that are deleted or not)
Run Code Online (Sandbox Code Playgroud)
帖子被“删除”,但我需要仍然可以从 RSS 提要访问这些帖子,但不能从应用程序的管理员访问。
我听到很多关于软删除的问题,但认为这可能对我的应用程序最有意义,并且感觉如果我使用 Archive,那么我将不得不运行多个查询
RSSFeed.posts || RSSFeed.archived_posts
Run Code Online (Sandbox Code Playgroud)
不确定哪个会更有效,或者在@$$中更痛苦。想法或例子?我知道这个例子听起来很愚蠢,但我试图想出多种可以用来找出该走哪条路的情况。
我正在尝试在Laravel 4.1中使用Elequent ORM的软删除功能
删除记录按预期工作,但是当我使用withTrashed()搜索结果然后使用trashed()检查它是否是软删除记录时出现以下错误
调用未定义的方法Illuminate\Database\Eloquent\Collection :: trashed()
这是我的代码.有什么建议?
$product = Product::withTrashed()->where('url', Input::get("product_url.$key"))->where('prolist_id', $list->id)->get();
if($product->trashed())
{
$product->restore();
}
Run Code Online (Sandbox Code Playgroud) 尝试使用以下方法删除用户模型:
//Hard Delete
User.destroy({id:userId}, function(err, res){
//Hard Delete
})
Run Code Online (Sandbox Code Playgroud)
我需要在User模型上进行软删除,并且当前在删除和更新文档时将isDeleted标志设置为true:
updateUser.isDeleted = true;
User.update({id:userId}, updateUser, function(err, res){
Update project
})
Run Code Online (Sandbox Code Playgroud)
在获取文档时,我正在检查if isDeleted - 是否为true.
是否有Sails或Waterline提供的内置功能,我可以配置它来执行软删除并避免更新,然后根据isDeleted标志进行提取?
我的代码中包含这些实体。
class Review extends BaseEntity {
/** @ORM\OneToOne(targetEntity="Action", mappedBy="review") */
protected $action;
}
class Action extends BaseEntity {
/** @ORM\OneToOne(targetEntity="Review", inversedBy="action") */
protected $review;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,这是“操作”和“评论”之间的OneToOne关系。我的问题是我也对实体使用软删除,因此,当我删除实体时,实际上并没有删除它,只是设置了删除日期。稍后在审核跟踪中,我需要显示已删除的评论,当然,我还需要来自上级操作的信息。我的问题是,我需要建立这种关系吗?还是有更好的方法?
我正在使用一个IDbCommandTreeInterceptor在我的模型上启用软删除.
System.Data.Entity.Infrastructure.Interception.DbInterception.Add(
new SoftDeleteInterception());
Run Code Online (Sandbox Code Playgroud)
我希望能够暂时禁用拦截器,以便我可以选择"已删除"的实体进行审计.
但是,看起来这个DbInterception集合是整个集合的.
有没有办法在DbContext 没有拦截的情况下创建一个新的?甚至是一种在DbContext每次创建拦截器时添加拦截器的方法?
我有一个抽象的基类A,这是一个@MappedSuperClass.此外,有几个实体类从类扩展A.类A包含一个名为的属性STATUS,表示是否删除记录.
@MappedSuperclass
public abstract class A {
@Id
private Long id;
@Column(nullable = false)
private boolean status = true;
}
Run Code Online (Sandbox Code Playgroud)
我想要的是能够从A带有@SQLDelete注释的类中的所有子类上执行软删除.例如,我有一个类B extends A,每当我在类上调用delete时B,我希望它更新数据库上该记录的状态.
@Entity
@Table(name = "TempTable")
@SQLDelete(sql = "update TempTable set STATUS = 0 where ID = ?") //Basically, I don't want
//to write this in every
//class. Instead write
//it to class A once.
@Where(clause = "STATUS = 1")
public …Run Code Online (Sandbox Code Playgroud) 我想制作一个使用SoftDeletes命名的特征SoftDeletesWithStatus,它也会更新状态列。我的问题是我想在 的函数中间实现我的代码,SoftDeletes如下所示:
protected function runSoftDelete() {
$query = $this->newQueryWithoutScopes()->where($this->getKeyName(), $this->getKey());
$time = $this->freshTimestamp();
$columns = [$this->getDeletedAtColumn() => $this->fromDateTime($time)];
//I want to implement my code here
$this->{$this->getDeletedAtColumn()} = $time;
if ($this->timestamps && ! is_null($this->getUpdatedAtColumn())) {
$this->{$this->getUpdatedAtColumn()} = $time;
$columns[$this->getUpdatedAtColumn()] = $this->fromDateTime($time);
}
$query->update($columns);
}
public function restore() {
if ($this->fireModelEvent('restoring') === false) {
return false;
}
$this->{$this->getDeletedAtColumn()} = null;
//I want to implement my code here
$this->exists = true;
$result = $this->save();
$this->fireModelEvent('restored', false);
return …Run Code Online (Sandbox Code Playgroud) public class User
{
public string Id { get; private set; }
public string Name { get; private set;}
public bool IsActive{ get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 MongoDB 驱动程序构建一个 .Net 应用程序来连接到 Mongo。一些已实现的实体有一个 IsActive 字段 - 基本上是一个布尔值,如果实体处于活动状态,则设置为 true;如果实体已被删除,则设置为 false。(如果愿意的话,可以进行软删除或逻辑删除)
我的目标是应用一个“全局过滤器”,它将成为应用于给定集合的任何过滤器的基础。类似于 EF Core 全局查询过滤器https://learn.microsoft.com/en-us/ef/core/querying/filters
MongoDB 驱动程序有类似的东西吗?如果没有,你们中有人对如何以其他方式实现这一点有建议吗?
默认情况下,Azure 对所有 keyvault 密钥强制执行清除保护,这在使用 terraform 时会引起一些麻烦。特别是,这可能会遇到这样的情况:您使用磁盘加密密钥删除了虚拟机,因此 terraform 也从密钥库中删除了磁盘加密密钥。
\n如果稍后您尝试重新创建该虚拟机(当然,您使用相同的加密密钥名称,因为它基于虚拟机名称),则创建过程将始终失败
\nazurerm_key_vault_key.disk_encryption[5]: Creating...\n\xe2\x95\xb7\n\xe2\x94\x82 Error: Creating Key: keyvault.BaseClient#CreateKey: Failure responding to request: StatusCode=409 -- Original Error: autorest/azure: Service returned an error. Status=409 Code="Conflict" Message="Key vmname-custom-disk-encryption is currently in a deleted but recoverable state, and its name cannot be reused; in this state, the key can only be recovered or purged." InnerError={"code":"ObjectIsDeletedButRecoverable"}\n\xe2\x94\x82 \n\xe2\x94\x82 with azurerm_key_vault_key.disk_encryption[5],\n\xe2\x94\x82 on encryption.tf line 12, in resource "azurerm_key_vault_key" "disk_encryption":\n\xe2\x94\x82 12: resource "azurerm_key_vault_key" "disk_encryption" {\nRun Code Online (Sandbox Code Playgroud)\n …