【问题标题】:Unknown attribute in Controller#createController#create 中的未知属性
【发布时间】:2015-12-22 03:51:09
【问题描述】:

我对解决这个问题有点困惑。我不知道这里发生了什么。如果我正在尝试获得新所有者(单击按钮重定向到所有者#new)。但它告诉我 :password_confirmation 未知???

这是我的错误代码:

unknown attribute 'password_confirmation' for Owner.

Extracted source (around line #46):
44
45
46
47
48
49


def create
@owner = Owner.new(owner_params)
 if @owner.save!
  flash[:notice] = 'You signed up successfully'
  flash[:color]= 'valid'

Rails.root: /Users/xxxx/Devel/Devel xxxx/backend

Application Trace | Framework Trace | Full Trace
app/controllers/owners_controller.rb:46:in `create'
Request

Parameters:

{"utf8"=>"✓", "authenticity_token"=>"WDAJLTX6467glOnUDJhNkzbdK2rdg+c8ZA1e2tFWfQnqQm2xLVLj    sZEMsvRu3c1i2wYrMh54JzW6YV2GonHYCQ==",
 "owner"=>{"name"=>"Daniel",
 "password"=>"[FILTERED]",
 "password_confirmation"=>"[FILTERED]"},
 "commit"=>"Signup"}

这是我的 owner_params:

def owner_params
  params.require(:owner).permit(:name, :password, :password_confirmation, :token)
end

希望你能尽快帮助我:) 问候,约翰

【问题讨论】:

  • owners 表中有password_confirmation 字段吗?
  • 没有。我也没有密码字段。我的应用程序使用盐对密码进行编码,然后将其保存在“password_hash”和“password_salt”字段中
  • 你在用设计吗?
  • 尝试将attr_accessor :password_confirmation 添加到Owner 模型中。
  • 不,我没有使用设计。谢谢!!这应该解决它! :) 我只写了: attr_accessor :password 并忘记确认。编辑:非常感谢!!它真的很有效。多么简单的错误..

标签: ruby-on-rails parameters require


【解决方案1】:

根据我的评论,将attr_accessor :password_confirmation 添加到Owner 模型应该可以解决您的问题。

Class Owner < ActiveRecord::Base
  attr_accessor :password_confirmation
  ...
end

【讨论】:

    【解决方案2】:

    您正在尝试使用从您的注册表单收到的所有参数创建一个Owner 对象。但是,例如 password_confirmationcommit 键可能与您的 Owner 类中的属性不对应。

    你应该过滤发送到new方法的参数:

    @owner = Owner.new(owner_params.slice('name', 'password'))
    

    【讨论】:

    • 已经修复了。谢谢。顺便说一句,我需要密码确认。
    猜你喜欢
    • 1970-01-01
    • 2018-09-07
    • 2023-01-04
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多