STI:rails 4中的未知属性

时间:2013-11-06 14:57:37

标签: ruby-on-rails ruby ruby-on-rails-4

我有问题。 我有模特用户:

class User < ActiveRecord::Base
end

继承自用户的模型承包商

class Contractor < User
  has_many :contractorEs
  has_many :customers
end

和继承自User

的Customer模型
class Customer < User
  belongs_to :contractor
  has_many :customer_es
end

在我的Customers表中,我有“contractor_id”列。 然后我rails c并输入:

c = Contractor.first
c.customers.build

发生了unknown attribute: contractor_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">

但列表中没有contractor_id。 怎么解决?我正在使用rails 4和ruby 2.0。

2 个答案:

答案 0 :(得分:1)

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

rails g migration AddContractorIdToUsers contractor_id:integer

rake db:migrate

然后继续设置自引用关系Self referential Active Record

答案 1 :(得分:1)

我知道此错误的唯一原因是users表没有contractor_id列。这就是为什么你没有在Customer的属性列表中看到它。仔细检查表并生成迁移以添加此列(如果不存在)。