mysql - Ruby on Rails - rails g 脚手架外键
问题描述
我是 ruby 新手,我想用表用户、角色和用户角色创建数据库。我的问题是我应该使用脚手架还是其他东西?以及如何在此表中添加自动增量 ID?以及如何添加外键?
rails g scaffold User name:string surname:string && rails generate scaffold Role name:string id:integer
解决方案
我应该使用脚手架还是其他东西?
如果您需要的是项目中与该特定表/模型相关的所有文件和更改,则可以使用脚手架。脚手架将添加资产、模型、控制器甚至测试。如果您觉得不需要它,您可以创建一个迁移来处理数据库中的表创建,仅此而已。另一方面,如果您需要更多,您可以创建一个模型 ( rails g model ...
),依此类推。
以及如何在此表中添加自动增量 ID?
按照惯例,Rails 将id
在您的表中添加一列,除非另有说明。根据您的数据库,它将使用该AUTO INCREMENT
子句,或者SERIAL
如果使用 Postgres。由于它支持多个关系数据库管理系统,因此有很多选择。
以及如何添加外键?
创建脚手架、模型或迁移时,您可以使用该references
选项。在你的情况下,如果你有一个 User 和 UserRole 模型/表,它看起来像这样:
rails g scaffold User name && rails g scaffold UserRole user:references
您可以查看有关迁移的Rails 指南以获取更多信息。
对给定问题的补充:
class ... < ActiveRecord::Migration[5.0]
def change
create_table :... do |t|
t.references :user_id_rated, references: :users, foreign_key: true
t.references :rated_by_user_id, references: :users, foreign_key: true
...
end
end
end