使用审核的宝石创建对象的草稿版本

时间:2018-11-13 22:25:23

标签: ruby activerecord acts-as-audited

经审核可与当前版本和以前的版本一起使用。我想要的是再有一个版本,将来的版本,也就是草案。

所需场景

对象的当前版本可在任何地方使用。但是,在管理屏幕中,您可以访问和编辑对象的将来/草稿版本。这使您可以进行其他人看不到的修改。草稿准备好后,您将其发布,使其成为在各处使用的当前版本。

我对此没有任何支持。

  1. 我想念什么吗?支持吗?
  2. 是否有某种经过审核的hack甚至可以通过丑陋的方式来支持它?
  3. 如果以上都不是,那么这似乎可以用Audited gem合理地完成吗?还是我最好使用其他方法?

1 个答案:

答案 0 :(得分:0)

我没有使用经过审核的gem来提供“草稿”模式。相反,我向模型添加了一个名为 active 的布尔值,并声明了

 default_scope { where(active: true) }
 scope :active, -> { where(active: true )  }
 scope :draft,  -> { where(active: false)  }

然后,在控制器中,为管理员提供一种查看草稿项目的方法:

def in_draft
  # Admins can see all items in draft status.
  # Sellers can see only their own items in draft status.
  # Buyers can't get here at all because of the authorizations
  if current_tuser.role == "Themadmin"
    @seller_listings = Listing.unscoped.draft
  end
end

最后,控制器中用于发布项目的方法:

80   def publish
 81     @listing = Listing.unscoped.find(params[:id])
 82     @listing.active = true
 83     respond_to do |format|
 84       if @listing.save!
 85         format.html {redirect_to @listing, notice: 'Listing changed from draft to published.'}
 86       else
 87         format.html {redirect_to @listing, notice: 'Something went wrong'}
 88       end
 89     end
 90   end