标签: rails-migrations

如何从MYSQL数据库实例自动生成Rails Migration类?

我有数据库脚本,它创建了包含100多个表和大量数据的数据库.对于我来说,为整个数据库创建Rails迁移类是一项繁琐的工作.但我认为Rails Migration是长期数据库变更管理的一个很好的选择.请提示一些从MYSQL数据库实例自动生成Rails Migrate类的方法.

ruby mysql database ruby-on-rails rails-migrations

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

rails是否允许您从命令行生成HABTM迁移?

每当我必须在rails中执行HABTM时,我总是发现自己想知道是否可以从命令行生成所需的迁移.

我希望通过这样做来节省时间:

rails g migration tracks_podcasts tracks:references podcasts:references id:false
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,也没有它的几个变体(有和没有id:false指令)

ruby-on-rails rails-migrations

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

在一次迁移中创建(删除)多个表

是否可以在一个轨道中创建(self.up)多个表三个迁移.如果可能,那么使用这种方法的传统智慧是什么.有些东西告诉我,每次迁移保留一张桌子会更好,但我只是想在railers上查看更多经验丰富的红宝石.

谢谢.

ruby-on-rails rails-migrations

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

Rails 3中未定义的add_column

我试图在Rails 3中运行迁移,我希望在表中添加一列,代码如下所示:

class AddConstAdr < ActiveRecord::Migration
  def change
    change_table: constants do |t|
      t.add_column :home_address, :string
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

当我这样做时,rake db:migrate我得到一个错误,说明未定义的方法'add_column'.我很困惑为什么会这样,有人可以帮忙吗?

ruby ruby-on-rails rails-migrations

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

仅在测试环境上运行迁移脚本

有没有一种方法只能在测试环境中运行迁移?

由于暂存和生产数据库已经存在,因此我只想在测试环境中创建表并将数据植入种子。

testing unit-testing test-environments rails-migrations ruby-on-rails-3.2

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

Rails 4.0整数ID - > UUID/Add选项散列到ActiveRecord Migration中的表?

stackoverflow新手在这里,虽然我已经多次在这里寻找过去有用的答案.这是我的第一个问题,所以请你好:)

我一直试图通过添加(或修改)create_table命令附带的选项哈希来弄清楚如何在Rails中的ActiveRecord Migration中更改表.更具体地说,我正在尝试将使用整数ID的模型转换为在Rails 4.0和postgresql 9.1.9中使用UUID的模型.

例如,我的架构目前看起来像这样:

create_table :users do |t|
  t.string :name
  t.timestamps
end
Run Code Online (Sandbox Code Playgroud)

我想创建一个迁移将其更改为这个(继UUID指南这里):

create_table :users, id: false do |t|
  t.primary_key :id, :uuid, :default => 'uuid_generate_v1()'
  t.string :name
  t.timestamps
end
Run Code Online (Sandbox Code Playgroud)

我可以添加/删除/更改列,但我无法弄清楚如何将其id: false放入表中.到目前为止,我想出的唯一方法是通过完全核对表格drop_table :users,然后重新创建它,这对我来说似乎效率低下.是否有一些ActiveRecord方法我可以调用添加选项哈希?试图谷歌它没有成功,但也许我不知道什么是正确的搜索查询?

任何帮助,将不胜感激.提前致谢!

编辑:语法.

uuid ruby-on-rails rails-migrations ruby-on-rails-4

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

通过rake任务将CSV文件上传到Rails 4 DB

我正在尝试使用rake任务(rake data:import)从csv fle导入数据并且收到错误.过去几个月我一直在教自己,但经过一天半的谷歌搜索后,我找到了许多解决方案,但没有一个可以开始工作.

到目前为止,我的rake文件就在这里:

require 'CSV'
namespace :data do
  desc "Import teams from csv file"
  task :import => [:environment] do
    file=IO.read('filepath of my csv').force_encoding("ISO-8859-1").encode("utf-8", replace: nil)

    CSV.foreach(file, :headers => true) do |row|
      product.create ([
                       :name => row['name'],
                       :rating => row['rating'],
                       :year => row['year'],
                       :country => row['country'],
                       :state_or_province => row['state_or_province']]
                      )
    end

  end
end
Run Code Online (Sandbox Code Playgroud)

我没有得到任何具体的错误(据我所知).混淆我的输出是:

tasks/dataimport.rake:7:in `block (2 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

该输出是否表明具体发生了什么?

ruby csv rake rails-migrations ruby-on-rails-4

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

将布尔列类型更改为int

我在Postgres DB表中有一个列是布尔类型.我想将它更改为整数,因为我需要的不仅仅是该列中的true/false.

我还想将所有真值更改为1,将假值更改为2.

这很容易在Rails中完成吗?我试图通过迁移文件和迁移我的数据库来做到这一点.

ruby postgresql ruby-on-rails rails-migrations ruby-on-rails-4

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

如何在没有id列的rails中添加外键约束

我有一个模型用户,我们有primary_key作为user_id而不是id,我知道我应该使用id为primary_key,但客户希望我们应该使用user_id而不是id.

我有另一个表,我必须将该表与user_id相关联

我正在为其他表添加这样的迁移:

t.references :user,             index: true, foreign_key: true
Run Code Online (Sandbox Code Playgroud)

但是当我运行迁移时,我得到一个与外键约束相关的错误,例如:

ActiveRecord :: StatementInvalid:PG :: UndefinedColumn:ERROR:外键约束中引用的列"id"不存在ALTER TABLE"user_devices"ADD CONSTRAINT"fk_rails_e700a96826"FOREIGN KEY("user_id")REFERENCES"users"("id")

似乎rails默认尝试将其他表指向id列,但我在users表中有user_id.

那么如何添加外键约束,如:

 ALTER TABLE "user_devices" ADD CONSTRAINT "fk_rails_e700a96826"
FOREIGN KEY ("user_id")
  REFERENCES "users" ("user_id")
Run Code Online (Sandbox Code Playgroud)

使用rails迁移?

migration ruby-on-rails rails-migrations

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

铁轨上的红宝石:铁轨5上的ratyrate?迁移错误中止

经过长时间的中断后我想回到RoR,当我试图rails db:migrate:

rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for:
Run Code Online (Sandbox Code Playgroud)

错误继续......

我正在考虑它的原因gem ratyrate.

在其中一个迁移文件中:

class CreateRatingCaches < ActiveRecord::Migration

  def self.up
      create_table :rating_caches do |t|
        t.belongs_to :cacheable, :polymorphic => true
        t.float :avg, :null => false
        t.integer :qty, :null => false
        t.string :dimension
        t.timestamps
      end

      add_index :rating_caches, [:cacheable_id, :cacheable_type]
    end

    def self.down
      drop_table :rating_caches
    end

end …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails rails-migrations ruby-on-rails-5

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