正如您将看到的,我对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时运行它们呢?
答案 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”