我已经阅读了很多有关此问题以及迁移指南和api的问题,目前尚不清楚。大多数答案都假设您拥有两个实体的模型和表格。我从头开始,所以需要一个完整的解决方案。我有毒品和毒品课程。药物可以在许多药物类别中,药物类别可以有许多药物。设置它的最佳方法是什么?我想使用rails generate。
使用: ruby 1.9.3p286(2012-10-12修订版37165)[x86_64-darwin11.4.0] Rails 4.0.0.beta1
我在哪里可以使用generate,我在哪里生成要启动的内容,然后编辑generate命令创建的文件?
我没有区分has和属于很多并且有很多通过。
我跑到目前为止......
Switched to branch 'DrugClasses'
➜ lm git:(DrugClasses) ✗ rails generate model Drug name:string
invoke active_record
create db/migrate/20130502191118_create_drugs.rb
create app/models/drug.rb
invoke rspec
create spec/models/drug_spec.rb
invoke factory_girl
create spec/factories/drugs.rb
➜ lm git:(DrugClasses) ✗ rails generate model Drug_Class name:string
invoke active_record
create db/migrate/20130502191208_create_drug_classes.rb
create app/models/drug_class.rb
invoke rspec
create spec/models/drug_class_spec.rb
invoke factory_girl
create spec/factories/drug_classes.rb
➜ lm git:(DrugClasses) ✗ rails generate model Drugs_Drug_Classes drug:references drug_class:references
invoke active_record
create db/migrate/20130502191606_create_drugs_drug_classes.rb
create app/models/drugs_drug_classes.rb
invoke rspec
create spec/models/drugs_drug_classes_spec.rb
invoke factory_girl
create spec/factories/drugs_drug_classes.rb
➜ lm git:(DrugClasses) ✗
以下是生成的内容。
➜ lm git:(DrugClasses) ✗ cat db/migrate/20130502191118_create_drugs.rb
class CreateDrugs < ActiveRecord::Migration
def change
create_table :drugs do |t|
t.string :name
t.timestamps
end
end
end
➜ lm git:(DrugClasses) ✗ cat db/migrate/20130502191208_create_drug_classes.rb
class CreateDrugClasses < ActiveRecord::Migration
def change
create_table :drug_classes do |t|
t.string :name
t.timestamps
end
end
end
➜ lm git:(DrugClasses) ✗ cat db/migrate/20130502191606_create_drugs_drug_classes.rb
class CreateDrugsDrugClasses < ActiveRecord::Migration
def change
create_table :drugs_drug_classes do |t|
t.references :drug, index: true
t.references :drug_class, index: true
t.timestamps
end
end
end
➜ lm git:(DrugClasses) ✗
我没有运行rake db:migrate。如果我做错了,我该如何回到正确的位置?只需删除创建的文件?当你看到我刚创建它时,我可以把分支丢弃。
提前致谢!
的 的 __ _ __ 更新的 _ < / EM> __ _ __
好的,我销毁了之前的(rails destroy模型Drugs_Drug_Classes),而是做了这个:
rails g migration CreateJoinTableDrugDrugClass drug drug_class
它产生了这个: class CreateJoinTableDrugDrugClass&lt; ActiveRecord的::迁移 改变 create_join_table:drug,:drug_classes do | t | #t.index [:drug_id,:drug_class_id] #t.index [:drug_class_id,:drug_id] 结束 结束 端
为什么索引被注释掉了?我运行了迁移并且实际创建了索引(我在模式中看到它们)。那令人困惑!
为什么这次迁移不会为Drug和DrugClass模型添加关联?