首页 > 解决方案 > Ruby on Rails - rails g 脚手架外键

问题描述

我是 ruby​​ 新手,我想用表用户、角色和用户角色创建数据库。我的问题是我应该使用脚手架还是其他东西?以及如何在此表中添加自动增量 ID?以及如何添加外键?

rails g scaffold User name:string surname:string  && rails generate scaffold Role name:string id:integer 

标签: mysqlruby-on-railsscaffolding

解决方案


我应该使用脚手架还是其他东西?

如果您需要的是项目中与该特定表/模型相关的所有文件和更改,则可以使用脚手架。脚手架将添加资产、模型、控制器甚至测试。如果您觉得不需要它,您可以创建一个迁移来处理数据库中的表创建,仅此而已。另一方面,如果您需要更多,您可以创建一个模型 ( 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

推荐阅读