私は一日中cancanを機能させようとしています。さまざまなチュートリアルを使用して何度かやり直しましたが、同じエラーが発生し続けます。
それは非常に簡単です。私は、管理者またはユーザーのいずれかの役割を持つことができるユーザー アカウント (Devise で作成) を持っています。能力クラスは次のとおりです。
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.role? :admin
can :manage, :all
end
end
end
プロファイル コントローラにはload_and_authorize_resource
、クラス User に含まれるという行がありますROLES = %w[admin user]
。に行くとhttp://localhost:3000/profiles/
エラーが表示されます
wrong number of arguments (2 for 1)
app/models/ability.rb:6:in
初期化中'`
別の方法user.admin?
を使用すると、
undefined method `admin?' for #<User:0x5b34c10>
上記のエラーをグーグルで検索すると多くの結果が得られるため、この問題を抱えているのは私だけではありませんが、解決策はどれもうまくいきませんでした.
はい、ロール列をユーザーテーブルに追加しました
class AddRoleToUsers < ActiveRecord::Migration
def change
add_column :users, :role, :string
end
end
Gem を追加し、bundle install を実行して、サーバーを再起動しました。