私のロジックが正しいかどうかはわかりませんが、これを行っています..手動で顧客を追加できる管理があり、顧客が登録できるフロントエンドがあります。
customers_controller.rb
class CustomersController < Admin::AdminController
def new
@customer = Customer.new
@customer.build_user
end
def create
@customer = Customer.new(params[:customer])
...
end
...
end
fronted_controller.rb
class FrontendController < ApplicationController
def show_signup
@customer = Customer.new
@customer.build_user
render "signup"
end
def signup
@customer = Customer.new(params[:customer])
...
end
end
ルート.rb
match "signup" => "frontend#show_signup", :via => :get
match "signup" => "frontend#signup", :via => :post
フロントエンド/signup.html.erb
<%= form_for @customer, :url => url_for(:controller => 'frontend', :action => 'signup'), :html => { :class => 'form-horizontal' } do |f| %>
<%= f.label :name, :class => 'control-label' %>
<%= f.text_field :name, :class => 'text_field' %>
/signup URLを表示した後、エラーがスローされます
NoMethodError in Frontend#show_signup undefined method `name' for #<Customer id: nil ...
問題はどこだ ?管理者保護されていない別のコントローラーから顧客モデルにアクセスしても問題ないと思います..
モデル:顧客はユーザーから継承し、管理セクションで作成するとうまくいきます。
user.rb
belongs_to :customer, :dependent => :destroy
...
customer.rb
has_one :user
...
ありがとうございました