Я пытаюсь извлечь модель блога и контроллер из приложения Rails. У меня есть Rails Engine под названием Blog
, и я собираюсь установить его на маршрут /blog
основного приложения.Аутентификация и авторизация в Rails Engine
В моем 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
И мне нужен доступ к модели пользователя, так что я могу проверить для канкан способностей для авторизации. Например, только администраторы могут создавать записи в блогах.
# 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
Есть ли способ достичь этих целей?
Посмотрите, как я решил подобную проблему - http://stackoverflow.com/questions/10668874/how-get-devises-current-user-method-in-rails-engine – wildDAlex
или это один 2, http://stackoverflow.com/questions/6845747/how-to-call-a-parent-apps-helper-method-from-a-rails-3-1-engine – westonplatter
@wildDAlex или westonplatter - Если вы чтобы повторить решение как ваш собственный ответ, я удалю свой ответ. (См. Http://meta.stackexchange.com/questions/90263/unanswered-question-answered-in-comments для определения того, почему это полезно.) Спасибо! – DreadPirateShawn