Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在gem中更新关联模型“;设计;帐户更新操作_Ruby On Rails_Ruby_Ruby On Rails 4_Devise - Fatal编程技术网

Ruby on rails 如何在gem中更新关联模型“;设计;帐户更新操作

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

我是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 "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。这就是问题所在