2013-02-19 57 views
12

民间,与ActiveRecord协会生成模型

我正在创建一个应用程序,其中我的问题空间中有两个实体。一个实体是“生物学家”,另一个实体是“实验”,现在一个生物学家可以进行许多实验,每个实验可以有许多生物学家。

我知道如何使用命令行生成器来创建模式和途径:

rails generate scaffold Biologist name:string expertise:string last_pub:text 

什么是添加具有关联关系的正确方法吗?生成后是否要更新模型代码?我不清楚的是,如果我添加一个“belongs_to”关联后代,这是如何反映在数据库架构中而不运行迁移或什么的?在上面的例子中,如果“实验”属于“生物学家”,那么“生物学家”表中将存在外键,如果我在模型类后期生成中添加关联,那么将如何创建该外键。我对rails很新,所以我很抱歉如果这是一个天真的问题。

回答

2

你必须创建一个迁移到biologist_id列添加到experiments表,然后在你的experiments模型添加belongs_to :biologist关系。

您可以找到更多的细节here

40

我认为你正在寻找的东西像下面这样:

rails g scaffold Biologist experiment:references 

this article何塞·Valim在那里他展示了如何做到以上,而且在命令行中添加数据库索引:

+0

为什么要从命令行添加数据库索引而不是迁移本身?队友的数据库将不会被索引,如果你离开它的迁移... – Meltemi 2013-02-19 14:38:54

+1

试一试你自己的轨道克脚手架生物学家标题:索引电子邮件:uniq'。您将看到创建索引所需的代码自动添加到您的迁移中。它节省了一些输入,并且意味着您可以运行您的迁移并继续前进。 – stephenmurdoch 2013-02-19 14:42:49

+0

ic ...我误以为你建议直接从命令行对模式进行更改。我的错。 – Meltemi 2013-02-19 18:50:57

0

我会为每个模型生成一个模型,然后创建一个连接表,因为你有一个有很多关系。如果你遵循惯例,rails应该理解给定你的连接表的关系。

一般来说,如果您需要修改活动记录关系,则应该使用has_many或has_and_belongs_to_many关系在模型中执行此操作。