我在Postgresql中有一个名为monthly_trips的表。有一行值为id = 3& al = 107.415。我的问题是当我尝试访问rails中“al”列的值时。使用Rails控制台和下面的代码我得到的结果是6154.426156397738。我不知道是什么产生了这个更大的数字(确切地说是57.295779513倍)。任何帮助将不胜感激!如果您需要更多信息,请与我们联系。
trip = MonthlyTrip.find(3)
result = trip.al
monthly_trip.rb
class MonthlyTrip < ActiveRecord::Base
attr_accessible :al, :month, :vehicle_id, :year
belongs_to :vehicle
end
psql输出(选择id,来自monthly_trips,其中id = 3;)
id | al
----+---------
3 | 107.415
(1 row)
psql输出(\ d monthly_trips)
Table "public.monthly_trips"
Column | Type | Modifiers
------------+-----------------------------+------------------------------------------------------------
id | integer | not null default nextval('monthly_trips_id_seq'::regclass)
vehicle_id | integer |
year | integer |
month | integer |
al | numeric(9,3) |
ak | numeric(9,3) |
az | numeric(9,3) |
ar | numeric(9,3) |
ca | numeric(9,3) |
co | numeric(9,3) |
ct | numeric(9,3) |
de | numeric(9,3) |
fl | numeric(9,3) |
ga | numeric(9,3) |
hi | numeric(9,3) |
ida | numeric(9,3) |
il | numeric(9,3) |
ind | numeric(9,3) |
ia | numeric(9,3) |
ks | numeric(9,3) |
ky | numeric(9,3) |
la | numeric(9,3) |
me | numeric(9,3) |
md | numeric(9,3) |
ma | numeric(9,3) |
mi | numeric(9,3) |
mn | numeric(9,3) |
ms | numeric(9,3) |
mo | numeric(9,3) |
mt | numeric(9,3) |
ne | numeric(9,3) |
nv | numeric(9,3) |
nh | numeric(9,3) |
nj | numeric(9,3) |
nm | numeric(9,3) |
ny | numeric(9,3) |
nc | numeric(9,3) |
nd | numeric(9,3) |
oh | numeric(9,3) |
ok | numeric(9,3) |
ore | numeric(9,3) |
pa | numeric(9,3) |
ri | numeric(9,3) |
sc | numeric(9,3) |
sd | numeric(9,3) |
tn | numeric(9,3) |
tx | numeric(9,3) |
ut | numeric(9,3) |
vt | numeric(9,3) |
va | numeric(9,3) |
wa | numeric(9,3) |
wv | numeric(9,3) |
wi | numeric(9,3) |
wy | numeric(9,3) |
created_at | timestamp without time zone | not null
updated_at | timestamp without time zone | not null
Indexes:
"monthly_trips_pkey" PRIMARY KEY, btree (id)
迁移文件
class CreateMonthlyTrips < ActiveRecord::Migration
def change
create_table :monthly_trips do |t|
t.integer :vehicle_id
t.integer :year
t.integer :month
t.decimal :al, precision: 9, scale: 3
t.timestamps
end
end
end
pg_locks表
locktype | database | relation | virtualxid | virtualtransaction | pid | mode | granted
"relation" | 11955 | 11000 | blank | "8/18417" | 25475 | "AccessShareLock" | TRUE
"virtualxid" | blank | blank | "8/18417" | "8/18417" | 25475 | ExclusiveLock" | TRUE
答案 0 :(得分:1)
您的“trip”变量会产生一个数组,这就是它返回BigDecimal
的原因您可以使用这种方法:
1)表示从ActiveRecord返回的第一个值
trip = MonthlyTrip.find(3).first
result = trip.al
OR
2)循环在数据库中找到的每个元素。
trip = MonthlyTrip.find(3)trip.each do | t |把t.al结束