Controller#created中的未知属性

时间:2015-09-24 13:49:41

标签: ruby-on-rails parameters require

我对解决这个问题感到有点困惑..我不知道这里发生了什么。如果我想要一个新主人(点击按钮重定向到所有者#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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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