我有一个运行Postgres的Rails应用程序,模型包含十进制字段。现在我正在用花岗岩创建一个琥珀API。我如何定义一个十进制字段在我的模型在水晶?
class User < Granite::Base
connection pg
table users
column id : Int64, primary: true
column api_token : String
column points : Float64 # this does not work
end
我得到一个运行时错误:
PG::ResultSet#read返回一个PG::Numeric。
Granite希望使用PG提供的列数据类型(在本例中为Numeric)。
因此,我会尝试将模型中的列定义为Number
或Float32
。
我没有在我的任何项目中使用这种列类型,但可能有一种情况,你需要做一个Rails迁移来改变列数据类型,这样它就可以与Amber和Rails一起工作。我不得不这样做,外键存储在PG表中的Int32,但实际的ID是Int64,这在获取记录时导致问题。答案是对那些定义为t.integer
到t.bigint
的列进行Rails迁移,问题就解决了。
你现在也可以加入我们的Discord !https://discord.gg/vwvP5zakSn