2012-11-13 46 views
1

我需要一些关于我正在处理的RoR应用程序的帮助。到目前为止,这是一个非常简单的应用程序,我使用Devise进行身份验证。RoR - 设计:用户在通过嵌套形式注册时未登录

我的应用程序有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 

我遇到的问题是虽然创建了新的合作伙伴并将其保存到用户和合作伙伴表中,但它们不会像通过用户/ sign_in的通常Devise路由创建新用户时那样自动登录。

任何人都可以解释我要去哪里错或我失踪了吗?

谢谢。

回答

1

在你的控制器,你在干什么:

sign_in @partner.user 

UPDATE

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 
+0

没有,只是试图在我的合作伙伴控制器添加此到创建行动,但仍然没有运气 –

+0

添加你的伴侣控制器代码。另外,请确保模型持久保存 –

+0

@ChrisArnold我在控制器中看不到sign_in代码 –