如何手动创建迁移文件Rails 4

时间:2014-05-29 02:52:56

标签: ruby-on-rails

正如您将看到的,我对Rails很陌生。

我试图遵循RailsGuides on Active Record Associations中的第3.3.2节,它说在定义多对多关系时,除了将has_and_belongs_to_many指令添加到模型之外,还要& #34;需要明确创建加入表"。

然后给出了迁移文件内容的示例:

class CreateAssembliesPartsJoinTable < ActiveRecord::Migration
  def change
    create_table :assemblies_parts, id: false do |t|
      t.integer :assembly_id
      t.integer :part_id
    end
  end
end

我的问题是:我应该给该档案一个名字?我看到rails g ...命令生成的文件都在..db\migrate文件夹中,并且在文件开头有一种时间戳。我可以使用任何名字吗?我害怕测试并弄乱整件事。我已经习惯了MS-SQL,能够查看表,添加/修改列等。

附带问题:从之前的迁移中已经存在一些文件。 rails如何知道哪些已经运行?然后在部署到Heroku时运行它们呢?

2 个答案:

答案 0 :(得分:4)

您可以为迁移指定任何名称。最好是像create_table_something那样自我解释的东西。您可以通过执行

生成迁移
rails generate migration create_assemblies_parts_joins_table

这将在db / migrate文件夹

中生成如下所示的文件
<timestamp>_create_assemblies_parts_joins_table

Rails跟踪scheme_migrations表中已经运行的迁移。它存储已运行的所有迁移的时间戳

更新:

您可以将表名更改为迁移文件中的任何内容。将使用您在以下行中提供的名称创建表

create_table :assemblies_parts, id: false do |t|

assemblies_parts将是表名。

答案 1 :(得分:1)

您不应该自己从头开始构建文件。正如@Vimsha所说 - 您可以运行rails迁移来为您创建连接表迁移。

连接表的rails标准命名是获取您要加入的模型的两个名称,并按字母顺序写入并复数。

例如,如果您的模型是“用户”和“发布”,那么它将是“posts_users”,但如果它是“post”和“comment”,那么它将是“comments_posts”