Ruby On Rails-模型中的多个引用

时间:2015-10-19 10:35:51

标签: ruby ruby-on-rails-4

我的模型与一对多关系中的另外三个模型具有多个关系。我以这种方式手动创建了一个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; ........有多个引用,以便在迁移文件中自动添加多个引用?如果可能,你怎么做?

1 个答案:

答案 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

文档: