Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何手动创建迁移文件Rails 4_Ruby On Rails - Fatal编程技术网

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

Ruby on rails 如何手动创建迁移文件Rails 4,ruby-on-rails,Ruby On Rails,正如您将看到的,我对Rails非常陌生 我试图遵循中的第3.3.2节,其中指出,在定义多对多关系时,除了向模型添加has\u和\u belish\u to\u many指令外,您“需要显式创建联接表” 然后给出了迁移文件内容的示例: class CreateAssembliesPartsJoinTable < ActiveRecord::Migration def change create_table :assemblies_parts, id: false do |t|

正如您将看到的,我对Rails非常陌生

我试图遵循中的第3.3.2节,其中指出,在定义多对多关系时,除了向模型添加
has\u和\u belish\u to\u many
指令外,您“需要显式创建联接表”

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

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
class CreateSassembliesPartsJointable
我的问题是:我应该给那个文件取什么名字?我看到由
rails g…
命令生成的文件都在
.db\migrate
文件夹中,并且在文件的开头有一种时间戳。我能用什么名字吗?我害怕测试并把整个事情搞砸。我已经习惯了MS-SQL,能够查看表、添加/修改列等


附带问题:已有一些以前迁移的文件。rails如何知道哪些已经运行?然后在部署到Heroku(比如)时运行它们怎么样?

您可以为迁移命名。最好是一些不言自明的东西,比如创建表格之类的东西。您可以通过执行以下操作生成迁移

rails generate migration create_assemblies_parts_joins_table
这将在db/migrate文件夹中生成一个如下所示的文件

<timestamp>_create_assemblies_parts_joins_table

assemblies\u parts
将是表名。

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

连接表的rails标准命名是采用您要连接的模型的两个名称,并按字母顺序和多元化编写它们


例如,如果你的模型是“用户”和“帖子”,它将是“帖子用户”,但如果是“帖子”和“评论”,它将是“评论帖子”

我明白了。然后将其余部分添加到文件中。很抱歉,我没有从RailsGuide中理解这一点。它创建了一个名为
列表\u位置\u连接\u表的表。我不希望这张桌子是多元化的。我可以更改迁移文件中的名称吗?
create_table :assemblies_parts, id: false do |t|