2013-02-21 53 views
0

以前在我的应用程序中,只有指南的所有者可以编辑他自己的指南,但我希望任何人都可以编辑指南,然后在更新时指出“由...编辑”。 ... 时间到了'。这可能吗?更新状态将显示用户名

在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 
+0

您可以显示用户指南的相关性。 – 2013-02-21 09:43:22

+0

已加入 – tessad 2013-02-21 10:03:59

+0

指南表中是否有任何列记录上次编辑它的用户 – 2013-02-21 10:12:43

回答

0

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

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

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

希望这有助于