Ruby on rails 为什么活动记录以BigDecimal表示法的格式存储整数值?

Ruby on rails 为什么活动记录以BigDecimal表示法的格式存储整数值?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我是个新手。观察下面的屏幕截图,我有一个带有以下列的模型书籍 class CreateBooks < ActiveRecord::Migration def change create_table :books do |t| t.string :title t.text :author t.integer :price t.integer :book_id end end end 您不需要为模型添加id。Rails为您做这件事。

我是个新手。观察下面的屏幕截图,我有一个带有以下列的模型<代码>书籍

class CreateBooks < ActiveRecord::Migration
  def change
   create_table :books do |t|
     t.string :title
     t.text :author
     t.integer :price
     t.integer :book_id
    end
 end
end

您不需要为模型添加id。Rails为您做这件事。当您添加一个名为“model”的列时,Rails推断它将是对其他表(关联)的引用。

您使用的是哪个DBMS?(postgres、mysql等)sqlite db@Max WilliamsDoesn没有回答这个问题,但价格不应该是浮点值而不是整数吗?如果这本书是$7.99怎么办?进入该数据库的sqllite控制台并键入
.schema books
'sqlite>。schema books创建表“books”(“id”INTEGER主键自动递增非空,“title”varchar,“author”text,“price”INTEGER,“datetime非空时创建”,updated_at“日期时间不为空,“book_id”整数);'<代码>@Max Williamsoh好的。谢谢你的回复。但我的问题是,为什么它要以“BigDecimal”格式存储“integer”值@Bruno PaulinoThat在NarasimhaReddy很奇怪。您确定已使用t.integer运行迁移吗?因为看起来您使用的是t.decimal。尝试回滚您的db并在没有此book_id列的情况下再次迁移,看看会发生什么。我很高兴您解决了:D。您能将您的解决方案发布到@NarasimhaReddy吗?
class AddBookIdToBooks < ActiveRecord::Migration
  def change
    add_column :books, :book_id, :integer
  end
end
2.2.2 :023 > Book.all
Book Load (0.4ms)  SELECT "books".* FROM "books"
=> #<ActiveRecord::Relation [#<Book id: 7, title: "Wings Of Fire",   author: "kalam's", price: 120, created_at: "2015-12-09 09:57:10", updated_at: "2015-12-09 09:57:10", book_id: #<BigDecimal:4f39ea0,'0.1001E4',9(27)>>]>