2012-05-16 2 views
3

Я пытаюсь извлечь модель блога и контроллер из приложения 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 

Есть ли способ достичь этих целей?

+2

Посмотрите, как я решил подобную проблему - http://stackoverflow.com/questions/10668874/how-get-devises-current-user-method-in-rails-engine – wildDAlex

+2

или это один 2, http://stackoverflow.com/questions/6845747/how-to-call-a-parent-apps-helper-method-from-a-rails-3-1-engine – westonplatter

+0

@wildDAlex или westonplatter - Если вы чтобы повторить решение как ваш собственный ответ, я удалю свой ответ. (См. Http://meta.stackexchange.com/questions/90263/unanswered-question-answered-in-comments для определения того, почему это полезно.) Спасибо! – DreadPirateShawn

ответ

Смежные вопросы