我在设计 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
在我的 :causes 模型中
belongs_to :user
出于某种原因,当我完全使用 current_user 时,在这个控制器中,它总是认为 current_user 等于 /causes/: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
我需要帮助,有人有建议吗?我想要做的就是验证用户是当前用户,所以不是每个人都可以编辑原因。