2017-02-15 61 views
1

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

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

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

那完美的解决方案是: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 
+0

谢谢你,这是完美的:) – Andrew

+0

其实我只是测试这个越深,我有一张纸条,上面是1日龄,如果我改变3.days 3小时它仍然让我编辑。你知道为什么这可能不适合我吗? – Andrew

+0

安德鲁我可以建议你包装(@ note.created_at + 3.days)的胸罩和检查,但任何方式最好的做法是使用'byebug',看看将如何改变价值 –

相关问题