저는 현재 직업 게시판 웹 응용 프로그램을 구축하고 있습니다. 두 가지 유형의 사용자와 고용주가 있습니다. 나는 그것이 양식을 가입의에 대한 사용자의 두 가지 유형이 Hired - Job Search Marketplace. Job Hunting Simplified!가 무엇을하고 있는지 예를 들어, 다른 가입 페이지 있지만 하나의 로그인 페이지를 갖고 싶어, 여기에 내가 지금까지다형성 연관 두 가입 양식과 하나의 로그인 양식
Routes.rb
Rails.application.routes.draw do
root 'home#index'
resources :profiles, except: [:new, :create]
resources :companies, except: [:new, :create]
devise_for :users, skip: [:registrations, :sessions]
devise_scope :user do
get '/login' => 'devise/sessions#new', as: 'new_user_session'
post '/login' => 'devise/sessions#create', as: 'user_session'
match 'logout', to: 'devise/sessions#destroy', as: :destroy_user_session, via: Devise.mappings[:user].sign_out_via
end
get '/new_employer' => 'companies#new', as: 'new_employer'
post '/new_employer' => 'companies#create'
get '/new_applicant' => 'profiles#new', as: 'new_applicant'
post '/new_applicant' => 'profiles#create'
end
를 한 일이다
User.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
belongs_to :user_profile, polymorphic: true
scope :employer?, -> { where(user_profile_type: 'Company') }
scope :applicant?, -> { where(user_profile_type: 'Profile') }
scope :admin?, -> { where(admin: true) }
end
Companies_controller.rb
class CompaniesController < ApplicationController
before_action :set_company, only: [:show, :edit, :update, :destroy]
# GET /companies
# GET /companies.json
def index
@companies = Company.all
end
# GET /companies/1
# GET /companies/1.json
def show
end
# GET /companies/new
def new
@company = Company.new
@company.build_user
end
# GET /companies/1/edit
def edit
end
# POST /companies
# POST /companies.json
def create
@company = Company.new(company_params)
respond_to do |format|
if @company.save
format.html { redirect_to @company, notice: 'Company was successfully created.' }
format.json { render :show, status: :created, location: @company }
else
format.html { render :new }
format.json { render json: @company.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /companies/1
# PATCH/PUT /companies/1.json
def update
respond_to do |format|
if @company.update(company_params)
format.html { redirect_to @company, notice: 'Company was successfully updated.' }
format.json { render :show, status: :ok, location: @company }
else
format.html { render :edit }
format.json { render json: @company.errors, status: :unprocessable_entity }
end
end
end
# DELETE /companies/1
# DELETE /companies/1.json
def destroy
@company.destroy
respond_to do |format|
format.html { redirect_to companies_url, notice: 'Company was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_company
@company = Company.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def company_params
# params.require(:company).permit(:company_name, :company_website)
params.require(:company).permit!
end
end
기업 /_form.html.erb
<%= simple_form_for(@company, url: new_employer_path) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :company_name %>
<%= f.input :company_website %>
</div>
<%= f.simple_fields_for :user do |u| %>
<div class="col-lg-6">
<%= u.input :email %>
</div>
<div class="col-lg-6">
<%= u.input :password %>
</div>
<div class="col-lg-6">
<%= u.input :password_confirmation %>
</div>
<% end %>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
어떻게하면 되겠습니까? 고마워요.