如何拥有一个博客,用户只能在Ruby on Rails中有限时间编辑帖子

时间:2017-02-15 00:51:08

标签: ruby-on-rails ruby edit

我制作了一个非常简单的博客,用户可以在其中创建,编辑和删除帖子,但我想添加一些功能,用户只能在有限的时间内编辑(例如3天)。我对Ruby的理解不够强大,不知道如何做到这一点,所以任何帮助都会受到赞赏。

这是我的笔记(我的帖子名称)控制器

class NotesController < ApplicationController
before_action :find_note, only: [:show, :edit, :update, :destroy]


def index
    @notes = Note.where(user_id: current_user)
end

def show
end

def new
    @note = current_user.notes.build
end

def create
    @note = current_user.notes.build(note_params)

    if @note.save
        redirect_to @note
    else
        render 'new'
    end
end

def edit

end

def update
    if @note.update(note_params)
        redirect_to @note
    else
        render 'edit'
    end
end

def destroy
    @note.destroy
    redirect_to notes_path
end

private

def find_note
    @note = Note.find(params[:id])
end

def note_params
    params.require(:note).permit(:title, :content)
end



end

我假设在编辑方法的某个地方,我需要编写一个规则来限制编辑帖子的能力只有3天,使用created_at函数以某种方式?我真的不知道如何做到这一点。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

完美的解决方案是:before_filter

class NotesController < ApplicationController
    before_filter :check_time!, only: [:edit, :update]

    def edit
    end

    def create
    end

    private

    def check_time!
      if Time.now() > @note.created_at + 3.days
        flash[:danger] = 'Out of 3 days'
        redirect_to note_path(@note)
      end
    end
end