我遇到的问题是设计current_user会混淆我的模型:id为用户:id。
路线:
match "/causes/:id/:slug" => "causes#show", :as => :cause, :via => 'get'
match "/causes/:id/:slug/edit" => "causes#edit", :as => :edit_cause, :via => 'get'
match "/causes/:id/:slug" => "causes#update", :via => 'put'
resources :causes, :only => [:index, :new, :create]
在我的:导致控制器:
before_filter :check_privileges, only: [:new, :create, :edit, :new, :update]
def check_privileges
#when I use this code everyone can access edit, etc.
redirect_to root_path unless current_user
end
并在我的:导致模型
belongs_to :user
出于某种原因,当我完全使用current_user时,在这个控制器中,它始终认为current_user等于/ cause /:id /:slug /
中的id我已尝试将检查权限代码放在应用程序控制器中,
我甚至尝试过分配这样的代码:
def check_privileges
#when I use this code no one can access edit, etc
@user = User.find_by_id(params[:id])
redirect_to root_path unless @user
end
我需要帮助,有人有建议吗?我想要它做的就是验证用户是当前用户,这样每个人都无法编辑原因。
答案 0 :(得分:0)
您的帖子有点令人困惑。 IIRC设计将当前用户ID存储在会话中,并且不会从URL中获取它。
看到这是与权限相关的问题并推出自己的解决方案。我强烈推荐一种替代方案。
https://github.com/ryanb/cancan
这适用于设计并且应该解决您的问题