更新状态将显示用户名

时间:2013-02-21 08:00:58

标签: ruby-on-rails ruby-on-rails-3

以前在我的应用程序中,只有指南的所有者可以编辑自己的指南,但我希望任何人都可以编辑指南,然后当它更新时会说'编辑.... ..日期'。这可能吗?

我在guidelines_controller.rb中的更新操作是

def update
    @guideline = Guideline.find(params[:id])

    if params[:guideline] && params[:guideline].has_key?(:user_id)
        params[:guideline].delete(:user_id) 
    end

    respond_to do |format|
      if @guideline.update_attributes(params[:guideline])
        format.html { redirect_to @guideline, notice: 'Guideline was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "show" }
        format.json { render json: @guideline.errors, status: :unprocessable_entity }
      end
    end
  end

并在同一个控制器中编辑动作

 def edit

      @guideline = Guideline.find(params[:id])
      @specialties = Guideline.order(:specialty).uniq.pluck(:specialty)

  end

用户模型user.rb是

 attr_accessible :content, :hospital, :title, :user_id, :guideline_id, :specialty
 has_many :guidelines
 has_many :favourite_guidelines

指南模型

belongs_to :user
 has_many :favourite_guidelines

1 个答案:

答案 0 :(得分:0)

如果要保留编辑的历史记录,则必须创建另一个表(guideline_edits:guideline_id,user_id,edited_at),并且可以显示最后编辑的表格。如果您还想跟踪每个编辑中的更改,您实际上可以使用audited gem

如果您不想保留历史记录,可以将edited_by(当前用户),edited_at(Time.now())字段添加到指南中,并在更新指南时更新这些列。

当然,在您的授权规则中,您必须允许任何已登录的用户编辑任何指南。

希望这有帮助