Ruby on rails 如何在gem中更新关联模型“;设计;帐户更新操作
我是RubyonRails的新手 我使用gem“designe”进行身份验证用户,在帐户更新操作中,我遇到了更新关联模型的问题。在帐户更新时,关联记录中的键“user_id”设置为nil 发生的数据库查询:Ruby on rails 如何在gem中更新关联模型“;设计;帐户更新操作,ruby-on-rails,ruby,ruby-on-rails-4,devise,Ruby On Rails,Ruby,Ruby On Rails 4,Devise,我是RubyonRails的新手 我使用gem“designe”进行身份验证用户,在帐户更新操作中,我遇到了更新关联模型的问题。在帐户更新时,关联记录中的键“user_id”设置为nil 发生的数据库查询: UPDATE "user_information" SET "user_id" = ? WHERE "user_information"."user_id" = ? [["user_id", nil], ["user_id", 1]] UPDATE "user_settings" SET
UPDATE "user_information" SET "user_id" = ? WHERE "user_information"."user_id" = ? [["user_id", nil], ["user_id", 1]]
UPDATE "user_settings" SET "user_id" = ? WHERE "user_settings"."user_id" = ? [["user_id", nil], ["user_id", 1]]
ie请求将关联模型中的密钥用户id重置为零。我做错了什么
我的代码:
迁移
create_table(:users) do |t|
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
# etc
end
create_table :user_settings, :id => false do |t|
t.references :user, null: false, index: true, unique: true
# etc
end
create_table :user_information, :id => :user_id do |t|
t.references :user, null: false, index: true, unique: true
# etc
end
用户模型
class User < ActiveRecord::Base
has_one :setting, :class_name => 'User::Setting', inverse_of: :user
has_one :information, :class_name => 'User::Information', inverse_of: :user
accepts_nested_attributes_for :setting
accepts_nested_attributes_for :information'
# devise
end
class用户'User::setting',与::User相反
有一个:信息,:class\u name=>'User::information',与::User相反
接受\u嵌套的\u属性\u用于:设置
接受以下内容的\u嵌套\u属性\u:information'
#设计
结束
注册管理员
class Users::Devise::RegistrationsController < Devise::RegistrationsController
before_filter :configure_permitted_parameters
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:account_update) do |u|
u.permit(:name, :email, :password, :password_confirmation, :current_password,
information_attributes: [:name, :contacts], setting_attributes: [:monetization])
# etc
end
end
def build_resource(hash=nil)
super
self.resource.build_setting
self.resource.build_information if hash.empty?
end
end
class用户::设计::注册控制器
请详细解释您的问题。我可以看到你的代码,但我不知道该怎么做。预期的行为是什么?观察到的行为是什么?您的查询正在更新用户设置表,您不知道为什么。这是你的问题吗?对不起,你的问题不清楚。@Vitaly这里应该发生什么事?你为什么认为你做错了什么?很抱歉对主题的描述不准确。我再试一次。我想更新用户信息/设置表,但当我这样做时,这些表中的user_id设置为nil。这就是问题所在