在 Ruby on Rails 中自动增加非主键字段

Posted

技术标签:

【中文标题】在 Ruby on Rails 中自动增加非主键字段【英文标题】:Auto increment a non-primary key field in Ruby on Rails 【发布时间】:2011-03-14 07:47:00 【问题描述】:

在 RoR 迁移中,如何自动递增非主键字段?我想在 db 定义中执行此操作,而不是在模型中。

【问题讨论】:

【参考方案1】:

您需要执行一条 SQL 语句。

statement = "ALTER TABLE `users` CHANGE `id` `id` SMALLINT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT" 
ActiveRecord::Base.connection.execute(statement)

您可以在迁移中手动输入

请注意,这只是一个示例。最终的 SQL 语句语法取决于数据库。

【讨论】:

我是否正确地假设您的回答是 Rails 不提供不直接执行 SQL 语句的方法来做到这一点?我希望类似:t.integer :auto_i, :auto_increment => true 能够工作(但它没有)。 是 Rails 在迁移中不提供 :auto_increment 关键字 如果你想在 Rails 中使用所有关键字或其他好东西,那么 . “用于 ROR 的 ruby​​mine IDE”将非常有用。我使用了过去 6 个月。 注意这是mysql的具体解决方案。 Postgres 不支持AUTO_INCREMENT。跳入这个问题以获取 Postgres 解决方案***.com/questions/787722/postgresql-autoincrement

以上是关于在 Ruby on Rails 中自动增加非主键字段的主要内容,如果未能解决你的问题,请参考以下文章

ruby on rails 固定装置中的自动关联

Ruby on Rails - 简单表单自动完成关联搜索

Rails Guide -- Ruby on Rake

ruby on rails(model)

Ruby on Rails - rails g 脚手架外键

ruby on rails 中使用phantomjs,并使用cookie