我正在尝试从 Rails 应用程序中提取博客模型和控制器。我有一个名为 Rails 引擎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
而且我需要访问 User 模型,以便我可以检查 CanCan 的授权能力。例如,只允许管理员创建博客文章。
# 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
有没有办法完成这些事情?