1

私が取り組んでいる RoR アプリケーションについて助けが必要です。これまでのところ、これは非常に単純なアプリケーションであり、認証には Devise を使用しています。

私のアプリケーションには、ユーザーとパートナーの 2 つのモデルがあります。パートナーが新しいアカウントを作成すると、「パートナー」の詳細がパートナー テーブルに保存され、「ユーザー」の詳細 (この場合は電子メールとパスワード) がユーザー テーブルに保存されます。これを行うには、ユーザー用のネストされたフォームを持つフォーム (パートナー/新規) を作成しました。

パートナー ビュー new.html.erb

<%= f.inputs do %>
  <%= f.input :name %>
  <%= f.semantic_fields_for :user do |t| %>
    <%= t.input :email %>
    <%= t.input :password %>
    <%= t.input :password_confirmation %>
  <% end %>
  <%= f.input :telephone %>
  <%= f.input :address %>
  <%= f.input :payout_details %>
  <%= f.input :preferred_payment %>
  <%= f.input :terms_and_conditions, :as => :boolean %>
<% end %>

パートナー モデル partner.rb

after_initialize :create_user
def create_user
  self.user ||= User.new
  self.user.roles = "partner"
end

パートナー コントローラー

class PartnersController < ApplicationController
  # GET /partners
  def index
    @partners = Partner.all
  end

  # GET /partners/1
  def show
    @partner = Partner.find(params[:id])
  end

  # GET /partners/new
  def new
    @partner = Partner.new
  end

  # GET /partners/1/edit
  def edit
    @partner = Partner.find(params[:id])
  end

  # POST /partners
  def create
    @partner = Partner.new(params[:partner])
    sign_in @partner.user

    respond_to do |format|
      if @partner.save
        format.html { redirect_to @partner, notice: 'Partner was successfully created.' }
      else
        format.html { render action: "new" }
      end
    end
  end

  # PUT /partners/1
  def update
    @partner = Partner.find(params[:id])

    respond_to do |format|
      if @partner.update_attributes(params[:partner])
        format.html { redirect_to @partner, notice: 'Partner was successfully updated.' }
      else
        format.html { render action: "edit" }
      end
    end
  end

  # DELETE /partners/1
  def destroy
    @partner = Partner.find(params[:id])
    @partner.destroy

    respond_to do |format|
      format.html { redirect_to partners_url }
    end
  end
end

私が抱えている問題は、新しいパートナーが作成され、User テーブルと Partner テーブルの両方に保存されますが、users/sign_in の通常の Devise ルートを介して新しいユーザーを作成するときのように、自動的にログインされないことです。

どこが間違っているのか、何が欠けているのか誰か説明してもらえますか?

ありがとう。

4

1 に答える 1

1

あなたのコントローラーで、あなたはやっていますか:

sign_in @partner.user

アップデート

def create
  @partner = Partner.new(params[:partner])

  respond_to do |format|
    if @partner.save
      sign_in @partner.user
      format.html { redirect_to @partner, notice: 'Partner was successfully created.' }
    else
      format.html { render action: "new" }
    end
  end
于 2012-11-13T16:27:03.743 に答える