Я пытаюсь настроить Devise с приложением Rails 3. У меня есть базовый класс Member и два унаследованных от этого - User и Company.
У меня есть свои собственные Пользователи :: RegistrationsController и Компании :: RegistrationsController, потому что я хочу иметь разные регистрационные формы для этих моделей.
Например:
class Users::RegistrationsController < Devise::RegistrationsController
def new
super
end
end
В моем route.rb у меня есть:
devise_for :members
#resources :member
devise_for :users, :class_name => 'User', :controllers => {:registrations => "users/registrations", :sessions => 'devise/sessions' } do
#get "users/sign_up" => "users/registrations#new", :as => :users_signup
end
devise_for :companies, :class_name => 'Company', :controllers => {:registrations => "companies/registrations", :sessions => 'devise/sessions' } do
#get "companies/sign_up" => "companies/registrations#new", :as => :companies_signup
end
Все отлично работает, кроме "/ users / edit". После успешного входа в систему я пытаюсь связаться с "/ users / edit" и системой, и система перенаправляет меня на страницу "/ users / sign_in". Но после второго успешного входа я могу без проблем зайти в "/ users / edit".
Как это исправить, чтобы иметь возможность посещать / пользователи / редактировать страницу после первого входа в систему?
Это моя базовая модель участника:
class Member < ActiveRecord::Base
before_save :setup_role
has_and_belongs_to_many :roles
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :username, :password, :password_confirmation, :remember_me
validates :username, :presence => true, :uniqueness =>true
def setup_role
if self.role_ids.empty?
self.role_ids = [2]
end
end
def role?(role)
return !!self.roles.find_by_name(role.to_s.camelize)
end
end
и модель пользователя без каких-либо данных прямо сейчас:
class User < Member
end