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