标签: rails-migrations

600
推荐指数
17
解决办法
35万
查看次数

在Rails 4中添加引用列迁移

用户有很多上传.我想在uploads引用该表的表中添加一列user.迁移应该是什么样的?

这就是我所拥有的.我不确定是否应该使用(1):user_id, :int或(2):user, :references.我甚至不确定(2)是否有效.只是试图以"轨道"的方式做到这一点.

class AddUserToUploads < ActiveRecord::Migration
  def change
    add_column :uploads, :user_id, :integer
  end
end
Run Code Online (Sandbox Code Playgroud)

除Rails之外的相关问题3. Rails 3迁移:添加引用列?

ruby-on-rails rails-migrations ruby-on-rails-4 rails-activerecord

294
推荐指数
7
解决办法
24万
查看次数

Rails迁移:撤消列的默认设置

我有问题,我在Rails中有一个迁移设置列的默认设置,如下例所示:

def self.up
  add_column :column_name, :bought_at, :datetime, :default => Time.now
end
Run Code Online (Sandbox Code Playgroud)

假设,我想在以后的迁移中删除默认设置,如何使用rails迁移?

我目前的解决方法是在rails迁移中执行自定义sql命令,如下所示:

def self.up
  execute 'alter table column_name alter bought_at drop default'
end
Run Code Online (Sandbox Code Playgroud)

但我不喜欢这种方法,因为我现在依赖于底层数据库如何解释这个命令.如果数据库发生更改,此查询可能不再起作用,迁移将被破坏.那么,有没有办法表示在rails中删除列的默认设置?

ruby-on-rails rails-migrations

190
推荐指数
3
解决办法
4万
查看次数

检查Rails中是否存在表

我有一个rake任务,除非存在一个表,否则它将无效.我正在一个网站上与20多名工程师一起工作,所以我想确保他们已经迁移了表,然后才能执行一个rake任务,该任务将填充相应的表.

AR有这样的方法Table.exists吗?如何确保他们已成功迁移表?

ruby ruby-on-rails rails-migrations rails-activerecord

168
推荐指数
4
解决办法
5万
查看次数

将时间戳添加到现有表

我需要将时间戳(created_at updated_at)添加到现有表.我尝试了以下代码,但它没有用.我也尝试过我在网上找到的其他解决方案,但它们也不起作用.

class AddTimestampsToUser < ActiveRecord::Migration
    def change_table
        add_timestamps(:users)
    end
end
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

ruby ruby-on-rails rails-migrations rails-activerecord

161
推荐指数
12
解决办法
8万
查看次数

在rails中显示待定迁移

是否有rake任务显示rails应用程序中的待定迁移?

ruby-on-rails rails-migrations

155
推荐指数
5
解决办法
6万
查看次数

rails中的t.belongs_to和t.references有什么区别?

t.references和之间有什么区别t.belongs_to?为什么我们有这两个不同的词?在我看来他们做同样的事情?试过一些谷歌搜索,但没有找到解释.

class CreateFoos < ActiveRecord::Migration
  def change
    create_table :foos do |t|
      t.references :bar
      t.belongs_to :baz
      # The two above seems to give similar results
      t.belongs_to :fooable, :polymorphic => true
      # I have not tried polymorphic with t.references
      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-migrations

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

如何生成迁移以使引用具有多态性

我有一个Products表,想要添加一列:

t.references :imageable, :polymorphic => true
Run Code Online (Sandbox Code Playgroud)

我试图通过以下方式为此生成迁移:

$ rails generate migration AddImageableToProducts imageable:references:polymorphic
Run Code Online (Sandbox Code Playgroud)

但我显然做错了.任何人都可以提出任何建议吗?谢谢

当我在生成迁移后尝试手动将其放入时,我这样做:

class AddImageableToProducts < ActiveRecord::Migration
  def self.up
    add_column :products, :imageable, :references, :polymorphic => true
  end

  def self.down
    remove_column :products, :imageable
  end
end
Run Code Online (Sandbox Code Playgroud)

它仍然没有奏效

ruby-on-rails polymorphic-associations rails-migrations

116
推荐指数
4
解决办法
6万
查看次数

在"引用"迁移中指定列名称

我想migration在Rails中创建一个引用另一个表.通常,我会这样做:

add_column :post, :user, :references
Run Code Online (Sandbox Code Playgroud)

这将创建一个名为列user_idposts表中.但是,如果,而不是user_id,我想要的东西author_id呢?我怎样才能做到这一点?

activerecord ruby-on-rails rails-migrations ruby-on-rails-3

113
推荐指数
5
解决办法
6万
查看次数

回滚失败的Rails迁移

如何回滚失败的rails迁移?我希望这rake db:rollback会撤消失败的迁移,但不会,它会回滚先前的迁移(失败的迁移减去一次).而且rake db:migrate:down VERSION=myfailedmigration也不起作用.我已经碰到了几次,这非常令人沮丧.这是我为复制问题所做的简单测试:

class SimpleTest < ActiveRecord::Migration
  def self.up
    add_column :assets, :test, :integer
    # the following syntax error will cause the migration to fail
    add_column :asset, :test2, :integer
  end

  def self.down
    remove_column :assets, :test
    remove_column :assets, :test2
  end
end
Run Code Online (Sandbox Code Playgroud)

结果:

==  SimpleTest: migrating =====================================================
-- add_column(:assets, :test, :integer)
   -> 0.0932s
-- add_column(:asset, :error)
rake aborted!
An error has occurred, all later migrations canceled:

wrong number of arguments (2 for 3)

好吧,让我们回滚:

$ rake db:rollback
== …

mysql ruby-on-rails rails-migrations rails-activerecord

80
推荐指数
6
解决办法
4万
查看次数