我需要使用外部源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)