2011-12-02 3 views
3

나는 2 개의 모델, 사용자 모델, 학교 모델이있는 시스템에서 작업하고 있습니다.레일 연장 장치 등록 양식

저는 일반 사용자 sign_up에 대해 'user'가 일반 사용자인지 또는 school_user인지를 나타내는 추가 필드로 'role'을 사용하여 기기 등록을 사용하고 있습니다.

현재 사용자가 devise/sign_up 조치를 사용하여 등록하는 동안 새 학교 기록을 만드는 관리자 사용자가 있습니다. 학교에는 아직 로그인 정보가 없습니다.

새 학교를 추가하려면 학교/새 조치 (학교 가입 링크)를 호출 할 수 있습니다.

대신 새 사용자로 '새 학교 가입 링크'를 사용하여 등록 할 학교에 대한 기밀 등록을 연장하고 싶습니다 (사용자 모델에 대해 이메일, 비밀번호, 역할 = '학교'사용) 및 이름 , 주소, 등등 정규 학교 테이블로 들어가기. 이 방법으로 학교 관리자는 로그인 계정을 얻습니다.

어떻게 장치/등록 양식을 연장하고이 2 개의 레코드를 만들 수 있습니까?

정말 감사드립니다.

+0

어떤 아이디어가? 없음? 나는 학교/new.html.erb를 "form_for"대신 "form_tag"를 사용하도록 확장하고 이메일/비밀번호/역할과 같은 사용자 모델 매개 변수를 포함하도록 양식을 확장 할 수 있다고 생각했습니다. create_action의 매개 변수를 읽고,이 두 레코드 (사용자 모델 및 학교 모델)를 작성하십시오. 이게 말이 되니? 나는 올바른 방향으로 나를 이끌어 줄 어떤 생각에 정말로 감사한다. 감사. – Atarang

+0

신경 쓰지 마십시오. 알았어. devise의 registrations_controller 및 views를 재정의합니다. – Atarang

+0

나는 당신의 대답을 넣는 것이 좋습니다! –

답변

0

재정 유증 등록 경로 :

routes.rb :

devise_for :users, controllers: {registrations: 'registrations'} 

가 컨트롤러를 생성/registrations_controller.rb :

class RegistrationsController < Devise::RegistrationsController 

    after_filter :add_school 

    protected 

    def add_school 

     if resource.persisted? # user is created successfuly 

      # resource holds all your form data. 
      resource.schools.build do |school| 
       school.name = resource.school_name # form fields... 
      end 

      @school.save 
     end 
    end 
end 

학교 필드가 user.rb 모델에 유효성 검사를 추가 확인하려면

예 :

그냥 참조
class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 

    devise :database_authenticatable, :registerable, 
      :recoverable, :rememberable, :trackable, :validatable 

    validates :name, 
       presence: true, 
       length: {in: 1..50} 

    validates :school_name, 
       presence: true, 
       length: {in: 1..50} 
end 

:

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 
    <%= devise_error_messages! %> 

    <div><%= f.label :school_name %> 
     <br/> 
     <%= f.text_field :name, autofocus: true %></div> 

    <div><%= f.label :email %> 
     <br/> 
     <%= f.email_field :email %></div> 

    # ... 

    <div><%= f.label :school_name %> 
     <br/> 
     <%= f.text_field :school_name %></div> 

    <div><%= f.submit "Sign up" %></div> 
<% end %>