У меня есть два типа счетов с отношениями, изложенными ниже в моделях ниже. Мне нужно создать регистрационную форму для @account, в которой есть поле выбора формы, в котором пользователь может выбрать регистрацию для учетной записи учащегося или партнера и сохранить эту запись учетной записи в соответствии с выбором (т. Е. Для таблицы студентов или партнеров и таблица счетов).
У меня проблемы с контроллером Accounts # new, и я не уверен, как это настроить так, чтобы это работало.
Счет:
class Account < ApplicationRecord
belongs_to :acct_holderable, :polymorphic => true
Студент:
class Student < ApplicationRecord
has_one :account, :as => :acct_holderable
Партнеры:
class Partner < ApplicationRecord
has_one :account, :as => :acct_holderable
Просмотр для учетных записей # new
<%= form_for(@account) do |f| %>
<%= render 'shared/error_messages', object: @account %>
<%= f.label :account_type %>
<%= f.select :acct_holderable, options_for_select(account_type, @account.account_holderable_type), class: 'form-control' %>
<%= f.label :first_name %>
<%= f.text_field :first_name, class: 'form-control' %>
<%= f.label :last_name %>
<%= f.text_field :last_name, class: 'form-control' %>
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<%= f.submit yield(:button_text), class: "btn btn-primary" %>
<% end %>
Помощник по учетной записи (для options_select)
def account_type
input =<<-OPTIONS
Student,
Partner,
Other Account TBU,
Other Account TBU
input.split(',')
end
Контроллер счетов
def new
@account = Account.new
end
def create
@account = Account.new(account_params)
if @account.save
@account.send_activation_email
flash[:info] = "Please check your email to activate your account before logging in!"
redirect_to login_url
else
render 'new'
end
end