2013-11-22 3 views
0

У меня есть две модели Devise: User и Vendor. Я не хочу, чтобы Vendors подписались на себя, поэтому пользователи Admin (контролируемые логическим полем в таблице пользователей) должны иметь возможность создавать новых поставщиков при входе в систему. В настоящее время, когда я пытаюсь это сделать при подписке, я не могу получить доступ к vendors_sign_up_path. Я получаю эту ошибку с сервера:Создание нового ресурса разработки, подписанного как другой ресурс разработки

Filter chain halted as :require_no_authentication rendered or redirected 

По-видимому, для доступа к этой странице вы не можете пройти аутентификацию? Кажется, имеет смысл для большинства ситуаций, но как я могу отменить это? Я создал пользовательский разработать контроллер вендоров/регистраций, как так, чтобы предотвратить автоматический вход после знака вверх (по this):

class Vendors::RegistrationsController < Devise::RegistrationsController 

def create 
    super 
end 


protected 

def sign_up(resource_name, resource) 
    true 
end 

end 

Похоже, мне нужно переопределить что-то еще в контроллере регистраций чтобы это сделать? Любая помощь очень ценится, спасибо заранее!

+0

Почему бы не просто создать поставщиков/новую страницу/действие и создать поставщиков через обычную форму? Вы могли бы даже повторно использовать форму Devise ... – omarvelous

+0

А это хорошая идея, я думаю. Будет ли это включать все модули Devise? Я попробую и дам вам знать. – settheline

ответ

0

У вас есть что-то подобное на ваших маршрутах?

resources :admins do 
    resources :vendors 
end 
devise_scope :vendor do 
    root to: "devise/sessions#new" 
end 

Во всяком случае, мой совет должен был бы использовать роли здесь:

#user.rb 
class User < ActiveRecord::Base 
    has_many :assignments 
    has_many :roles, :through => :assignments 
    def has_role?(role_sym) 
    roles.any? { |r| r.name.underscore.to_sym == role_sym } 
    end 
end 


#role.rb 
class Role < ActiveRecord::Base 
    attr_accessible :name 
    has_many :assignments 
    has_many :users, :through => :assignments 
end 

#assignment.rb 
class Assignment < ActiveRecord::Base 
    attr_accessible :user_id 
    belongs_to :user 
    belongs_to :role 
end 

Таким образом, производители могут быть зарегистрированы в качестве пользователей и администратор должен иметь возможность изменить роль поставщика позже.

+0

Хммм ... У меня есть 'Vendor' и' User' как разные модели по некоторым важным реляционным причинам, плюс у них очень мало общих атрибутов. Я не хочу, чтобы они разбивали их на один класс пользователей, поскольку сложность отношений будет расти только в будущем. У меня нет этого блока кода маршрутов. Что именно это делает? – settheline

+0

Первый маршрут дает возможность администраторам создавать поставщиков. Второй маршрут создает знак разработчика для поставщиков. –

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