オーバーライドは、登録ルートを考案:
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 %>
任意のアイデア?なし?私は学校/ new.html.erbを "form_for"の代わりに "form_tag"を使用するように拡張し、電子メール/パスワード/役割のようなユーザーモデルパラメータを含むようにフォームを拡張することを考えていました。 create_actionのパラメータを読んで、2つのレコード(ユーザーモデルと学校モデル)を作成します。これは意味をなさないでしょうか?私は正しい方向に私を導く考えを本当に感謝します。ありがとう。 – Atarang
気にしないでください。それは働いた。 deviseのregistrations_controllerとviewsをオーバーライドします。 – Atarang
あなたの答えを入れることをお勧めします! –