以前在我的应用程序中,只有指南的所有者可以编辑自己的指南,但我希望任何人都可以编辑指南,然后当它更新时会说'编辑.... ..日期'。这可能吗?
我在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 :(得分:0)
如果要保留编辑的历史记录,则必须创建另一个表(guideline_edits:guideline_id,user_id,edited_at),并且可以显示最后编辑的表格。如果您还想跟踪每个编辑中的更改,您实际上可以使用audited gem
如果您不想保留历史记录,可以将edited_by(当前用户),edited_at(Time.now())字段添加到指南中,并在更新指南时更新这些列。
当然,在您的授权规则中,您必须允许任何已登录的用户编辑任何指南。
希望这有帮助