Ruby on Rails和数据库协会
问题描述:
我对Ruby世界很陌生,在定义模型之间的关联时存在一些不清楚的地方。问题是:协会在哪里保存?Ruby on Rails和数据库协会
例如,若设为i通过执行创建Customer模型:
generate model Customer name:string age:integer
然后创建订单模型
generate model Order description:text quantity:integer
,然后我设置以下述方式关联:
class Customer < ActiveRecord::Base
has_many :orders
end
class Order < ActiveRecord::Base
belongs_to :customer
end
我想这里是缺少的东西,例如两个实体之间的外键。它如何处理使用关键字“has_many”和“belongs_to”创建的关联?
感谢
答
每当你生成您的订单,你可以这样做:
generate model Order description:text quantity:integer customer:references
,它会自动创建在迁移你的外键。 rails约定是每行都有一个名为“id”的主键,外键是它所引用的表,后面跟着一个下划线,然后是id。因此,在这种情况下,订单表将具有一个名为“customer_id”的属性。
由于您已经生成了您的属性,因此您应该创建一个新的迁移脚本,将一个名为“customer_id”的整数列添加到您的订单表中。
您不要想要修改现有的迁移。只需创建一个新的列添加列。
class add_customer_id_to_orders < ActiveRecord::Migration
def self.up
add_column :orders, :customer_id, :integer
end
def self.down
remove_column :orders, :customer_id
end
end
注意:如果你已经做了一些在你的数据库中创建的数据,这将导致一些空的外键,这你要修复,或直接删除,并创建新的数据。
答
你应该的(整数)列添加到您的订单表,被称为 'CUSTOMER_ID'。