小编Wil*_*ill的帖子

Ruby on Rails忽略整数限制

我需要使用外部源id(一个64位整数)索引用户表.Rails完全能够存储这样的数字,除非它似乎是主键.我有以下迁移:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users, :id => false do |t|
      t.integer :id, limit: 8
      t.string :name

      t.timestamps null: false
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

迁移工作正常,没有报告错误,但当我尝试使用64位整数播种时,我被告知:

RangeError: 76561198054432981 is out of range for ActiveRecord::Type::Integer with limit 4
Run Code Online (Sandbox Code Playgroud)

显然Rails忽略了限制字段,只要它是主键/:id字段?我该怎么办呢?

值得我使用的是sqlite3(默认),但据我所知,sqlite完全能够存储64位整数.

这是sqlite的table_info:

0|id|integer(8)|0||0
1|name|varchar|0||0
2|created_at|datetime|1||0
3|updated_at|datetime|1||0
Run Code Online (Sandbox Code Playgroud)

ruby sqlite ruby-on-rails

6
推荐指数
1
解决办法
1413
查看次数

标签 统计

ruby ×1

ruby-on-rails ×1

sqlite ×1