ruby-on-rails - rails3 bigint主键

标签 ruby-on-rails ruby-on-rails-3 primary-key bigint

我想在Rails 3下创建一个bigint(或string或任何不是int)类型的主键字段。

我有给定的数据结构,例如:

things
------
id bigint primary_key
name char(32)

我目前正在尝试的方法:
create_table :things, :id => false do |t| # That prevents the creation of (id int) PK
  t.integer :id, :limit => 8 # That makes the column type bigint
  t.string :name, :limit => 32
  t.primary_key :id # This is perfectly ignored :-(
end

列类型将是正确的,但sqlite3不会提供主键选项,我怀疑MySQL也是这种情况。

最佳答案

不久前有我自己,并在这里找到了答案:Using Rails, how can I set my primary key to not be an integer-typed column?

您需要设置primary_key:false,然后使用自定义语句来执行迁移。

编辑1:您需要检查数据库文档以查找要执行的确切查询。它作为常规SQL语句执行,并且需要特定于数据库。我提到的问题中的示例是针对Postgre SQL的。如果您使用的是MySQL,则可能必须更改它。

关于ruby-on-rails - rails3 bigint主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5880207/

相关文章:

Android SQLite 主键必须是唯一的异常(exception),当主键是唯一的时

mysql - 如何在没有 UNIQUE 索引或 PRIMARY KEY 的情况下在 MySQL 中使用 ON DUPLICATE KEY UPDATE?

javascript - Rails 3 设备 : destroy localStorage and sessionStorage when logout?

ruby-on-rails - has_many 关联 Rails4.2

ruby-on-rails - 依赖销毁不起作用,has_many :model, :dependent => :destroy

javascript - 如何根据所选字段动态更改表单中的 url 或操作?

ruby-on-rails - 更改文件类型回形针

mysql - 主键列的全局禁用更新

jquery - 响应 jquery 请求时出现 304 错误

ruby-on-rails - Rails 3.0中的默认验证错误消息在哪里?