我的模型与一对多关系中的另外三个模型具有多个关系。我以这种方式手动创建了一个Model类
class Voter < ActiveRecord::Base
belongs_to :city
belongs_to :grp
belongs_to :profession
end
我有两个问题,
首先,如何创建具有多种关系的迁移?这是我的迁移文件
class CreateVoters < ActiveRecord::Migration
def change
create_table :voters do |t|
t.string :firstname
t.string :middlename
t.string :lastname
t.text :comments
t.date :birthday
t.references :city, index: true, foreign_key: true
t.timestamps null: false
end
end
end
我想这样做
t.references :city, index: true, foreign_key: true
t.references :grp, index: true, foreign_key: true
t.references :profession, index: true, foreign_key: true
这是正确的吗?
第二个问题是,不是手动更改迁移文件,而是可以运行“生成模型”模型&#39; ........有多个引用,以便在迁移文件中自动添加多个引用?如果可能,你怎么做?
答案 0 :(得分:6)
你没事。您可以在一个命令中完全生成模型及其迁移:
rails generate model voter city:references grp:references profession:references firstname:string middlename:string lastname:string comments:text birthday:date
这将生成您的关系和正确迁移的模型。
app / models / voter.rb:
class Voter < ActiveRecord::Base
belongs_to :city
belongs_to :grp
belongs_to :profession
end
db / migrate / 20151019104036_create_voters.rb:
class CreateVoters < ActiveRecord::Migration
def change
create_table :voters do |t|
t.references :city, index: true, foreign_key: true
t.references :grp, index: true, foreign_key: true
t.references :profession, index: true, foreign_key: true
t.string :firstname
t.string :middlename
t.string :lastname
t.text :comments
t.date :birthday
t.timestamps null: false
end
end
end
文档: