Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Postgresql表值不';t匹配Ruby on Rails活动记录查询结果_Ruby On Rails_Postgresql_Activerecord_Rails Console - Fatal编程技术网

Ruby on rails Postgresql表值不';t匹配Ruby on Rails活动记录查询结果

Ruby on rails Postgresql表值不';t匹配Ruby on Rails活动记录查询结果,ruby-on-rails,postgresql,activerecord,rails-console,Ruby On Rails,Postgresql,Activerecord,Rails Console,我在Postgresql中有一个名为monthly_trips的表。有一行的值id=3&al=107.415。我的问题是当我试图访问rails中“al”列的值时。使用Rails控制台和下面的代码,我得到了6154.426156397738的结果。我不知道是什么导致了这个更大的数字(确切地说是57.295779513倍)。任何帮助都将不胜感激!如果你需要更多信息,请告诉我 trip = MonthlyTrip.find(3) result = trip.al 每月行程.rb class Mont

我在Postgresql中有一个名为monthly_trips的表。有一行的值id=3&al=107.415。我的问题是当我试图访问rails中“al”列的值时。使用Rails控制台和下面的代码,我得到了6154.426156397738的结果。我不知道是什么导致了这个更大的数字(确切地说是57.295779513倍)。任何帮助都将不胜感激!如果你需要更多信息,请告诉我

trip = MonthlyTrip.find(3)
result = trip.al
每月行程.rb

class MonthlyTrip < ActiveRecord::Base
  attr_accessible :al, :month, :vehicle_id, :year
  belongs_to :vehicle
end
psql输出(每月\d次)

迁移文件

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
数组的“trip”变量结果,这就是它返回BigDecimal的原因

您可以使用这种方法:

1) 指示从ActiveRecord返回的第一个值

trip = MonthlyTrip.find(3).first
result = trip.al

2) 循环数据库中找到的每个元素

trip=MonthlyTrip.find(3)trip


您在迁移中声明了什么类型的
al
?@cdesrosiers al在我的迁移中声明为精度为9、刻度为3的十进制数。这在Postgresql中转换为数字(9,3)。当您在控制台中读取
trip.al
时,应该会得到一个
BigDecimal
对象(
#
)。这看起来像什么?您使用的是哪个版本的Rails和
pg
?我检查了一个3.2应用程序,该应用程序在数据库中有一个
数值
(又称
:decimal
)列,它被作为一个BigDecimal取出。由于某种原因,你得到了一个
浮点值,这是不对的。@muistooshort我在那个ruby文件中尝试了对浮点值的to_d转换,我在将其插入PG之前生成了相同的错误数字。Rails使用ruby的to_d来转换浮点值肯定是有问题的。谢谢你给我指点这个!
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
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
trip = MonthlyTrip.find(3).first
result = trip.al