Ruby on Rails - rails g 脚手架外键

Ruby on Rails - rails g scaffold foreign key

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

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

Should I use scaffold or something else?

如果您需要的是项目中与特定 table/model 相关的所有文件和更改,则可以使用脚手架。脚手架将添加资产、模型、控制器,甚至测试。如果你觉得你不需要它,你可以创建一个单一的迁移来处理数据库中的 table 创建,仅此而已。另一方面,如果您需要更多,您可以创建模型(rails g model ...),依此类推。

And how to add autoincrement id in this tables?

按照惯例,Rails 将在您的 table 中添加一个 id 列,除非另有说明。根据您的数据库,它将使用 AUTO INCREMENT 子句,或者如果使用 Postgres,则使用 SERIAL。由于它支持多种关系数据库管理系统,因此有很多选择。

And how to add foreign key?

创建脚手架、模型或迁移时,您可以使用 references 选项。在你的情况下,如果你有一个用户和用户角色 models/tables,它看起来像这样:

rails g scaffold User name && rails g scaffold UserRole user:references

您可以查看Rails guides关于迁移的更多信息。


给定问题的补充:

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