Ruby on rails RubyonRails中的表创建

Ruby on rails RubyonRails中的表创建,ruby-on-rails,Ruby On Rails,我有这三个表,它们用外键相互引用 create table category(cat_id int primary key auto_increment, cat_name varchar(30),cat_label varchar(30)); create table product(prod_id int primary key auto_increment, cat_id int(11), prod_name varchar(100),prod_desc varchar(100), fo

我有这三个表,它们用外键相互引用

create table category(cat_id int primary key auto_increment, cat_name varchar(30),cat_label varchar(30));

create table product(prod_id int primary key auto_increment, cat_id int(11), prod_name varchar(100),prod_desc varchar(100), foreign key (cat_id) references category(cat_id))

create table sales(sales_id int primary key auto_increment, prod_id int(11), sales_name varchar(100),sales_desc varchar(100),
foreign key(prod_id) references product(prod_id));
作为Rails新手,我知道如何使用scaffold创建一个表,如下所示

rails generate scaffold category cat_id:integer cat_name:string cat_label:string 

如何在Rails中创建上述三个表?

您可以从在控制台中编写以下行开始:

rails g model Category cat_id:integer cat_name:string car_label:string

rails g model Product prod_id:integer cat_id:integer prod_name:string prod_desc:string 
这将生成两个表(您应该自己尝试创建表Sales),您可以这样做:,它基本上涵盖了您需要的所有内容

然后,要设置外键,您应该通过关联,您也可以在此处找到关联:


您应该仔细阅读,因为Rails修道院有许多其他编程语言所不具备的独特功能。

您可以在终端上完成

rails g model category name
rails g model product name category:references
rails g model sale name product:references
它将使用3个表生成3个迁移,并使用外键相互引用


您还可以在一次迁移中手动写入所有需要的内容。

@jvillian我不明白您的意思。上面的scafold只能为类别生成表。如何处理包含外键引用的product表和sales表。我必须逐个创建表吗?为什么需要
cat_id
而不是
id
?这是一个非常基本的问题。如前所述,我们希望你们做一些基础研究。生成模型包含在大量的书籍、web文章中,并且非常容易。如果您已经完成了rails g model(这一点尚不清楚),那么您需要运行迁移,这一点在中已经讨论过了。非常感谢Mechnicov先生。似乎所有要引用的表都必须在主键处具有id。cat_id不工作,但id工作。谢谢你,非常感谢。你的回答对我也很有用。所以我投票了