Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 STI:rails 4中的未知属性_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails STI:rails 4中的未知属性

Ruby on rails STI:rails 4中的未知属性,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我有问题。 我有一个模型用户: class User < ActiveRecord::Base end 和未知属性:出现承包商id。然后我键入: customer = Customer.new 并已: <Customer id: nil, first_name: nil, last_name: nil, address: nil, country: nil, zip: nil, city: nil, phone: nil, company_name: nil, signature

我有问题。 我有一个模型用户:

class User < ActiveRecord::Base
end
未知属性:出现承包商id
。然后我键入:

customer = Customer.new
并已:

<Customer id: nil, first_name: nil, last_name: nil, address: nil, country: nil, zip: nil, city: nil, phone: nil, company_name: nil, signature: nil, type: "Customer", created_at: nil, updated_at: nil, v_token: nil, password_digest: nil, u_token: nil, email: nil, state: "new">

但列表中没有
承包商id

如何解决?我正在使用rails 4和ruby 2.0。

创建迁移并将其添加到数据库中

rails g migration AddContractorIdToUsers contractor_id:integer

rake db:migrate

然后继续设置自引用关系

我知道的导致此错误的唯一原因是
用户
表没有
承包商id
列。这就是为什么您没有在客户的属性列表中看到它。仔细检查该表,如果该列不存在,则生成迁移以添加该列。

我的客户表中已经有承包商id。它是在创建模型中添加的。我们在您的Customer.new代码中没有看到它,它只是数据库中的一个用户行。见第二个答案。您没有contractor_id列。您需要为自引用添加一个单独的列,您不能只依赖主键,您需要一个外键并在关联中设置属性。@NikitaKissMe您说的是“customers表”,但由于这是STI,我想您指的是“users”表。你没有多张桌子,对吧?
customer = Customer.new
<Customer id: nil, first_name: nil, last_name: nil, address: nil, country: nil, zip: nil, city: nil, phone: nil, company_name: nil, signature: nil, type: "Customer", created_at: nil, updated_at: nil, v_token: nil, password_digest: nil, u_token: nil, email: nil, state: "new">
rails g migration AddContractorIdToUsers contractor_id:integer

rake db:migrate