相关疑难解决方法(0)

SQLite修改列

我需要修改SQLite数据库中的列,但由于数据库已经在生产中,我必须以编程方式执行此操作.根据我的研究,我发现为了做到这一点,我必须做到以下几点.

  • 使用新架构创建新表
  • 将数据从旧表复制到新表
  • 放旧桌子
  • 将新表重命名为旧表名

对于应该相对容易的事情而言,这似乎是一项荒谬的工作量.有没有更简单的方法?我需要做的就是更改现有列的约束并为其指定默认值.

sqlite alter-table

44
推荐指数
3
解决办法
6万
查看次数

Rails:无法在迁移中添加:precision或:scale选项和change_column?

这似乎在之前被问过:rails decimal precision和scale

但是,在运行时,change_column迁移:precision:scale它们实际上并不影响模式或数据库,但db:migrate没有错误运行.

我的迁移文件如下所示:

class ChangePrecisionAndScaleOfPaybackPeriodInTags < ActiveRecord::Migration
  def self.up
    change_column :tags, :payback_period, :decimal, { :scale => 3, :precision => 10 }
  end

  def self.down
    change_column :tags, :payback_period, :decimal
  end
end
Run Code Online (Sandbox Code Playgroud)

但我的架构(和数据)仍然是:

t.decimal  "payback_period"
Run Code Online (Sandbox Code Playgroud)

还有其他人有这个问题吗?

谢谢,

玩笑

migration precision ruby-on-rails decimal scale

18
推荐指数
2
解决办法
1万
查看次数

创建索引后重命名SQLite表/列/行

如果我在创建索引后重命名SQLite Tables/Columns/Rows,旧索引是否仍然可用?

谢谢!

sql database sqlite format database-design

5
推荐指数
1
解决办法
856
查看次数

如何使价格0.00而不是0.0?

我的用户可以输入和创建价格.我想知道如何制作它,所以当用户输入23.5时,他们得到23.50而不是0.0他们得到0.00.如何添加到t.decimal或我的价格:十进制以下能力?

感谢您的帮助!

答案(:具有规模和精度的价格)

class CreatePrices < ActiveRecord::Migration
  def self.up
    create_table :prices do |t|
      t.string :price_name
      t.decimal :price, :precision => 10, :scale => 2
      t.date :date

      t.timestamps
    end
  end

  def self.down
    drop_table :prices
  end
end
Run Code Online (Sandbox Code Playgroud)

Schema.rb:

  create_table "prices", :force => true do |t|
    t.string   "price_name"
    t.decimal  "price",      :precision => 10, :scale => 2
    t.date     "date"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "user_id"
  end
Run Code Online (Sandbox Code Playgroud)

我的脚手架形式: <%= f.label:price%>
<%= f.text_field:price%>

然后在你的视图中输入number_to_currency(@ model.attribute):

价钱:

ruby-on-rails

3
推荐指数
1
解决办法
1518
查看次数