【发布时间】:2012-10-23 22:06:57
【问题描述】:
我正在尝试创建一个简单的用户和地址模型。
我创建了一个嵌套表单,其中有一个嵌套在用户模型中的地址模型。我的用户模型具有设计属性等。
一切正常,只是在创建用户时发生了奇怪的行为。
如果您阅读下面的内容,您会注意到“user_id”,即在首次提交记录时填充了拥有用户的地址。但紧接着,看起来像是在 Devise 核心中的东西正在将 user_id 重置为 null。
有谁知道这是什么原因造成的?
在 2012-11-03 22:45:20 +1100 为 127.0.0.1 开始 POST "/users" 由 Member::UsersController#create 作为 HTML 参数处理: {"utf8"=>"✓", "authenticity_token"=>"Pr8lSEJalWwosuaLPOrYqQ+sOkFCyoNujaUybxpZDAg=", "user"=>{"address_attributes"=>{"first_name"=>"HOlley", "last_name"=>"侯"}, "email"=>"HollyHou@hisense.com.au", “密码”=>“[过滤]”,“密码确认”=>“[过滤]”}} 创建新用户 (0.1ms) BEGIN (0.1ms) COMMIT (0.0ms) BEGIN Member::User Exists (0.3ms) SELECT 1 AS one FROM
member_users在哪里member_users.member_users(created_at,current_sign_in_at,current_sign_in_ip,encrypted_password,last_sign_in_at,last_sign_in_ip,remember_created_at,reset_password_sent_at,reset_password_token,sign_in_count,updated_at) 值('2012-11-03 11:45:20',NULL,NULL, 'hollyhou@hisense.com.au', '$2a$10$1JvC/sO85L2esNp8xA9qseTc78.rtOyF3zSBi/fOTiWJRt9.zgYha', NULL, NULL, NULL, NULL, NULL, 0, '2012-11-03 11:45:20') SQL (0.2ms) 插入member_addresses(address3,address_1,address_2,address_type,business_name,city,country,created_at,first_name,geo_late,geo_long,is_primary,last_name,middle_name,phone1,phone1_type,phone2,phone2_type,postcode,primary_email,secondary_email,state,status,suburb,title,updated_at,user_id) 值 (NULL, NULL, NULL, 空,空,空,空,'2012-11-03 11:45:20','霍利',空,空, 空,'侯',空,空,空,空,空,空,空,空,空,空,空, NULL, NULL, NULL, '2012-11-03 11:45:20', 5) (1.3ms) 提交
(0.1ms) 开始 (0.2ms) 更新member_users设置last_sign_in_at='2012-11-03 11:45:20',current_sign_in_at='2012-11-03 11:45:20',last_sign_in_ip='127.0.0.1',current_sign_in_ip='127.0.0.1' ,sign_in_count= 1,updated_at= '2012-11-03 11:45:20'member_users.id= 5 (0.2ms) 提交 (0.1ms) 开始
(0.2ms) 更新member_addresses设置user_id= NULL,updated_at= '2012-11-03 11:45:20' 其中member_addresses.id= 5 (0.2ms) 提交
控制器是一个自定义控制器,因为我最终(一旦我得到这个工作)需要能够在注册后重定向到 2 个不同的位置,具体取决于客户从哪里登录(在这种情况下是结帐或标题)。
class Member::UsersController < Devise::RegistrationsController
def create
super
end
def new
super
end
def edit
Rails.logger.debug { "Editing the user" }
super
end
def show
Rails.logger.debug { "Showing the user controller" }
end
end
来自 routes.rb
devise_for :users, :class_name => "Member::User", :controllers => {:registrations => 'member/users', :sessions => 'member/sessions'}
【问题讨论】:
-
您使用的是自定义控制器还是设计提供的基本控制器?
-
自定义控制器,但现阶段的控制器只是调用“super”。我会把它贴在线程上。
标签: ruby-on-rails ruby-on-rails-3