3

Rails アプリからブログ モデルとコントローラーを抽出しようとしています。Rails Engine を呼び出して、メイン アプリのルートBlogにマウントします。/blog

私のBlogエンジンには、PostsController通常の CRUD アクションを持つ があります。問題は、メインの Rails アプリの認証方法を使用したいということです。

# app/controllers/blog/posts_controller.rb
module Blog
  class PostsController < ApplicationController
    # Basically I want to have access to the require_login method
    # from the main app.
    before_filter :require_login, only: [:new, :create]

    def new
      @post = Post.new
      authorize! :create, Post
    end
  end
end

また、承認のための CanCan 機能を確認できるように、User モデルにアクセスする必要があります。たとえば、ブログ投稿を作成できるのは管理者のみです。

# app/models/blog/ability.rb
module Blog
  class Ability
    include CanCan::Ability

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

      # The user.admin? method is defined on the User class
      # from the main rails app.
      if user.admin?
        can [:create, :update], Post
      end
    end
  end
end

これらのことを達成する方法はありますか?

4

1 に答える 1