2

Ryan Bates は CanCan の開発をやめたようです。Rails 4 は完全にサポートされていません。そして、ready4rails4 は動作しないと言っています。

CanCan を別の承認ライブラリに置き換える必要がありますか?

よろしく

4

1 に答える 1

2

あなたが言及した理由、未解決の問題と未解決のプルリクエストが多すぎるため、私は新しいプロジェクトでCanCanを使用しなくなりました。

Ryan の「Authorization From Scratch」RailsCasts を参照してください。

次のコード スニペットも役立つ場合があります。

ライブラリ/エラー/

module Errors
  class NotAuthorizedError < StandardError; end
end

アプリ/コントローラー/application_controller.rb

class ApplicationController < ActionController::Base

  def authorize(record)
    raise Errors::NotAuthorizedError unless policy(record).public_send(params[:action] + "?")
  end

  def policy(record)
    "#{record.class}Policy".constantize.new(current_user, record)
  end
end

アプリ/ポリシー/user_policy.rb

class UserPolicy

  attr_reader :user, :current_user

  def initialize(current_user, user)
    @current_user = current_user
    @user = user
  end

  def update?
    user == current_user
  end
end

アプリ/コントローラー/

class UsersController

  def update
    @user = User.find(params[:id])
    authorize(@user)
    # etc
  end
end

私が現在すべての新しいアプリで使用しているこのソリューションは、次の優れた記事に基づいています: http://www.elabs.se/blog/52-simple-authorization-in-ruby-on-rails-apps . 実装とテストが非常に簡単なので、アプリケーションのニーズに簡単に適応させることができます。

CanCanの代わりに頑張ってください。

于 2013-12-10T05:11:32.760 に答える