I have a table named monthly_trips in Postgresql. There is a row with values id = 3 & al = 107.415. My problem is when I try to access the value of the "al" column in rails. Using the Rails Console with the code below I get the result of 6154.426156397738. I have no idea what is generating this larger number (57.295779513 times larger to be exact). Any help would be greatly appreciated! Let me know if you need more information.
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 output (select id, al from monthly_trips where id = 3;)
id | al
----+---------
3 | 107.415
(1 row)
psql output (\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)
Migration file
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 table
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
Your "trip" variable results for an array that's why it returns BigDecimal
You can use this kind of method:
1) Indicated the 1st value returned from ActiveRecord
trip = MonthlyTrip.find(3).first
result = trip.al
OR
2) Looping each element found in the database.
trip = MonthlyTrip.find(3) trip.each do |t| puts t.al end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With