2013-02-21 61 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 ())字段添加到指南,並更新這些列以更新指南。

而且,在您的授權規則中,您必須允許任何登錄用戶編輯任何指南。

希望這有助於