Ruby on rails RubyonRails-如何在Scaffold中创建外键

Ruby on rails RubyonRails-如何在Scaffold中创建外键,ruby-on-rails,database,activerecord,Ruby On Rails,Database,Activerecord,我对rails非常陌生,所以可能有一个简单的答案。我正在尝试将“user\u category”列添加到我的“users”表中,该表引用“user\u categories”表。我尝试了以下方法: rails generate migration add_user_category_to_users user_category:integer 然后 rails generate scaffold User_Category title:string description:text 但是在r

我对rails非常陌生,所以可能有一个简单的答案。我正在尝试将“user\u category”列添加到我的“users”表中,该表引用“user\u categories”表。我尝试了以下方法:

rails generate migration add_user_category_to_users user_category:integer
然后

rails generate scaffold User_Category title:string description:text
但是在rake db:migrate上,我得到以下错误:

==  CreateUserCategories: migrating ===========================================
-- create_table(:user_categories)
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "user_categories" already exists: CREATE TABLE "user_categories" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "description" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 

任何帮助都将不胜感激。

活动记录方式声称智能属于您的模型,而不是数据库。因此,诸如触发器或外键约束之类的特性并没有被大量使用,这些特性将一些智能推回到数据库中

诸如validates:foreign_key、:university=>true之类的验证是模型可以强制执行数据完整性的一种方法。关联上的:dependent选项允许模型在父对象被销毁时自动销毁子对象。与在应用程序级别运行的任何东西一样,这些都不能保证引用完整性,因此有些人在数据库中使用外键约束来增强它们

尽管Active Record不提供任何工具来直接使用这些功能,但execute方法可用于执行任意SQL。您还可以使用一些插件,比如外国人,它向活动记录添加外键支持(包括在db/schema.rb中转储外键的支持)


嗯,这不是你应该做的。。。我想你应该有两种型号,一种是
用户
有许多
类别
,另一种是
类别
属于1
用户
。我错了吗?您是否已经为用户类别创建了迁移?仔细检查你的db/migrate目录,看看它是否已经在那里了。1个用户有1个类别,但我不想将类别名称存储在数据库中。这类似于拥有一个“State”表并多次引用id而不是完整的State名称,我不确定这是什么意思。我知道逻辑属于模型,但如何添加引用另一个表的字段?它甚至不允许我添加模型,这样我就可以在模型中链接它们。。。我错了吗?当您生成这样的模型时:
rails生成模型另一个模型:references
,它将在迁移和索引中为该字段生成一个
另一个模型id
字段,这通常就足够了。您的数据库中不需要外键约束。这正是我要寻找的--您是否有一个链接,我可以从中了解更多信息?请按照我在回答中添加的链接进行操作,还有:,这应该足以理解整个事情:)在我的例子中,它看起来像
rails生成模型user\u category user:user\u category