devise current_userで、モデルの:idをusers: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]
私の:causesコントローラーで:
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
私は助けが必要です、誰か提案がありますか?私がしたいのは、ユーザーが現在のユーザーであることを確認することだけです。そうすれば、誰もが原因を編集できるわけではありません。