在Rails4中使用Devise,如何让用户只编辑自己的评论?

时间:2014-11-14 20:16:38

标签: ruby-on-rails ruby-on-rails-4 devise

我对如何在视图和控制器中使用Devise的current_user帮助器感到困惑。我是否需要进行迁移才能在数据库表中添加user_id?我是否需要对会话控制器执行某些操作?

这是我的路线档案:

 devise_for :users

  resources :groups, shallow: true do
      resources :ideas do
           resources :comments
      end
  end 

登录/注册等工作正常。我想允许用户只编辑他们创建的想法和评论。

我是否需要在应用程序控制器中添加辅助方法,例如:

  def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end

  helper_method :current_user

然后,理论上,我应该能够做到以下几点?

   <% if current_user %>
       <%= link_to 'Edit', edit_idea_path(@idea) %>
   <% end %>

然后我还需要用current_user更新我的控制器编辑操作?例如。 ?

    @comment = current_user.comment.find(params[:id])

2 个答案:

答案 0 :(得分:2)

我认为你要做的是:

  <% if current_user.id == @idea.user.id %>
       <%= link_to 'Edit', edit_idea_path(@idea) %>
  <% end %>

答案 1 :(得分:2)

<% if current_user.id == @idea.user.id %>
   <%= link_to 'Edit', edit_idea_path(@idea) %>
<% end %>

有点工作,但它与解锁门一样安全。它没有明确阻止用户转到/idea/5/edit并进行更改(即使他们没有创建/拥有想法5)。如上所述:使用CanCan或在控制器上使用:update方法滚动自己的解决方案。