0

アプリにDeviseとCanCanを使用しています。ユーザーがサインインすると、自分のアカウント ページが表示されます。このためのカスタム リダイレクトを設定しました。

def after_sign_in_path_for(resource)
    url_for :controller => '/users', :id => current_user.id, :action => 'myaccount'
end

ただし、ユーザーが登録するときに同じことをしようとすると、つまり after_sign_up_path_for(resource) を使用すると、次のエラーが表示されます。

 NoMethodError in UsersController#show

undefined method `user' for #<User:0x25d15e8>

これは、CanCan 用にセットアップした次の capability.rb ファイルを参照しています。

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user

    can :manage, :all do |all|
        all.try(:user) == user
    end

それが言っている行は、問題は all.try(:user) == user. なぜこれが問題を引き起こしているのか理解できませんか?リダイレクトに何を入れても、常に {app}/users/22 などに移動し、このエラーが発生するようです。

4

1 に答える 1

0

すべての問題の原因である実行しようとしていることを示すSO 投稿に従ってください。user.try(:user) == user

can :manage, :all, :id => user.idしたがって、問題を解決するために使用できます。

于 2013-03-01T13:06:14.937 に答える