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路由创建新用户时那样自动登录。
任何人都可以解释我要去哪里错或我失踪了吗?
谢谢。
没有,只是试图在我的合作伙伴控制器添加此到创建行动,但仍然没有运气 –
添加你的伴侣控制器代码。另外,请确保模型持久保存 –
@ChrisArnold我在控制器中看不到sign_in代码 –