相关疑难解决方法(0)

在ROR迁移期间将列类型从Date更改为DateTime

对于我正在制作的应用,我需要将我的列类型从日期更改为日期时间.我不关心数据,因为它仍在开发中.

我怎样才能做到这一点?

ruby mysql migration ruby-on-rails ruby-on-rails-3

223
推荐指数
4
解决办法
16万
查看次数

在rails中将列类型更改为更长的字符串

在第一次迁移时,我在列content上声明为字符串Activerecord根据annotate gem将其设置为字符串(255).

在我将应用程序推送到使用postgres的heroku后,如果我在内容中输入一个长度超过255的字符串,我会得到错误

PGError: ERROR: value too long for type character varying(255)
Run Code Online (Sandbox Code Playgroud)

问题是我需要内容包含一个非常长的字符串(自由文本,可能是数千个字符)

  1. 什么变量(字符串不适合这个)会接受?
  2. 如何创建迁移以替换该列的类型

谢谢

string postgresql ruby-on-rails ruby-on-rails-3.1 rails-activerecord

88
推荐指数
2
解决办法
5万
查看次数

Rails 3 SQLite3 Boolean false

我试图在SQLite3表中插入一个错误的布尔值,但它总是插入一个真值.

这是我的迁移:

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.column :name, :string
      t.column :active, :boolean, :default => false, :null => false
    end
  end

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

当我尝试使用rails插入时,它会生成以下SQL:

INSERT INTO "users" ("name", "active") VALUES ('test', 'f')
Run Code Online (Sandbox Code Playgroud)

SQLite将'f'视为true,因此它将true插入到我的数据库中.我想要它生成的查询是:

INSERT INTO "users" ("name", "active") VALUES ('test', false)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

rails:3.0.7

sqlite3 gem:1.3.3

sqlite ruby-on-rails ruby-on-rails-3 rails-activerecord

9
推荐指数
1
解决办法
7954
查看次数