2016-09-06 65 views
0

我挂钩到一个现有的数据库,以便为管理创建一些简单的脚手架。他们使用的命名约定是table_id。因此,我需要将缺省主键从“id”修改为“customer_id”,例如。我也希望能够使用这种改变的铁轨脚手架,而不必重新布线。Rails 4 - 重命名主键

回答

0

其实你不想这样做。

ID是数据库只,Rails中你可以使用外键,和这样说

负荷消费的has_many:XXX 和 XXX belongs_to的:负荷消费

,你给你1 n关系数据库的含义XXX需要消费者存在。

回答你为什么不想改变这种情况,是因为你的数据库在改变之后不知道如何行动(如果可能的话),以及如何在没有ID的情况下搜索新脚手架上的物品?由于ID是负荷消费ID

如果你不知道如何给外键

click here

+0

记录的更新将失败,如果没有列“id”引用,但是,对吧?我连接的数据库的customer_id是主键。如果我运行rails更新或销毁,对于id = 45,它不会找到记录。 – Atari2600

+0

您可以将collum添加到数据库中作为解决方案[请在此处查看](http://guides.rubyonrails.org/active_record_migrations.html#highlighter_783751)。为了回答你,我完全不知道轨道数据库是如何工作的,但是我猜想不会,我不会建议你弄乱它。 那么你会有一个问题发现ID,它会太麻烦(如果可能的话)。你能想象吗? *东西* find_by(id = costumer_id)如果你搜索别的东西而不是你的客户?使用相同的ID为2表代表不同的东西..嗯..有点凌乱 –

+0

示例..可以说,对于每一个客户,你有产品..你将如何访问产品编号? products.costumer_id?为什么不使用这个costumer_id作为关键?你会如何储存这些产品?并订购?或搜索具体信息? costumer_id在您的产品表上不会是完美的顺序..也就是说,在您的产品上,它会是(例如)costumer_id 3,然后在第二个产品上它会是costumer_id 1 ..所以您的表不会在为了找到它需要为了找到ID 你能想象如果你有1000个产品?并且ID不是1-1000? –