Разработать с помощью Rails 3 - невозможно получить доступ к странице редактирования после первого входа - PullRequest
0 голосов
/ 20 февраля 2012

Я пытаюсь настроить 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...