显示上次修改的表/记录Rails 3.2

时间:2012-07-02 08:18:06

标签: ruby-on-rails ruby-on-rails-3.2 audit last-modified acts-as-audited

我仍然无法弄清楚如何实现这一点,因为我是这个新手。有些人打电话给我说我必须使用审计,所以它确实如此。这是我的控制器:

  def show

    add_breadcrumb 'Contract Bekijken', :contracten_path

    @contracten = Contracten.find(params[:id])

    @audits = @contracten.audits.collect { |a| a.created_at }

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @contracten }
    end
  end

这是我整个控制器的馅饼。 http://pastie.org/4270702

但我不知道这是对的,也不知道如何在我的观点中实现这一点。

我希望有人真的可以提供帮助,因为我本周真的需要这个。

感谢。


我有一个rails应用程序,我可以在数据库中存储合同,它还在数据库中有人员和工厂表。 现在我想要一个最后修改过的表。

我希望当人们更新/添加新记录到数据库时,它会在屏幕截图右侧显示修改。

谢谢:D

2 个答案:

答案 0 :(得分:0)

您需要的是编辑的审核历史记录。

您可以自己实现(如果您确实想要自己编写自定义业务逻辑,则可能有意义)通过挂钩到该模型的ActiveRecord callbacks

示例实现可能如下所示:

class Contract < ActiveRecord::Base
  after_save :audit

  def audit
    log = AuditLog.new(:user_id => current_user, :action => :update, ...)
    log.save
  end
end

这假设您有一个AuditLog模型,其中包含您要登录的相应字段以及您写入的审计方法。

或者,更简单的方法是使用为您执行此操作的Audited gem(但可能会有一些限制)。

从Audited的文档中,您似乎可以简单地获取Contract记录并使用该模型上的audits来访问经审核的信息。

样品

def show
  @contract = Contract.find(params[:id])
  @audits = @contract.audits.collect { |a| a.created_at }
end

现在,您拥有@audits变量中审核的所有时间戳,并可以使用<% @audits.each do ...从视图中访问它们。

答案 1 :(得分:0)

根据您的问题,您似乎只需要一个基于updated_at字段的列表。

怎么样 - @contract_list = Contract.all.order( "updated_at DESC").limit(10)

然后你可以迭代视图中的列表。

好看的页面!