我正在尝试使用:has_many :through
类型关联,但出现以下错误:
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: work_units.developer_id:
关于这类事情的许多其他帖子都只是有拼写错误,但我检查了我的。
class Developer < ActiveRecord::Base
attr_accessible :skype_name, :language_ids, :user_attributes
has_many :work_units
has_many :projects, :through => :work_units
...
end
class Project < ActiveRecord::Base
attr_accessible :complete, :description, :finalised, :price
has_many :work_units
has_many :developers, :through => :work_units
...
end
class WorkUnit < ActiveRecord::Base
attr_accessible :hours_worked
belongs_to :project
belongs_to :developer
end
我跑db:migrate
了,它没有抱怨。我确实犯了一个错误,不得不回滚数据库然后重新迁移,但我认为我做对了。我使用了annotate
gem,它没有显示我期望的任何关系 ID。那么,我需要创建一个 WorkUnits 表还是我遗漏了什么?导轨指南没有提到手动制作表格。
编辑
这是我用来创建 WorkUnit 模型和东西的迁移:
class CreateWorkUnits < ActiveRecord::Migration
def change
create_table :work_units do |t|
t.integer :hours_worked, :default => 0
t.timestamps
end
end
end
编辑 2
我的 schema.rb 中的片段:
create_table "work_units", :force => true do |t|
t.integer "hours_worked", :default => 0
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "projects", :force => true do |t|
t.string "description"
t.decimal "price", :precision => 8, :scale => 2
t.boolean "complete", :default => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
同样对于:developers
。那么,为什么我的迁移没有为我添加关联信息?