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工作。谢谢你,非常感谢。你的回答对我也很有用。所以我投票了