Questions tagged «rails-migrations»

Rails迁移用于以可逆方式跟踪和应用数据库更改。


7
在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 除Rails 3外的相关问题。Rails 3迁移:是否添加参考列?

4
Rails迁移:撤消列的默认设置
我有一个问题,我在Rails中进行了迁移,该迁移为列设置了默认设置,例如以下示例: def self.up add_column :column_name, :bought_at, :datetime, :default => Time.now end 假设我想在以后的迁移中删除默认设置,那么如何使用Rails迁移来做到这一点? 我当前的解决方法是在rails迁移中执行自定义sql命令,如下所示: def self.up execute 'alter table column_name alter bought_at drop default' end 但是我不喜欢这种方法,因为我现在依赖于基础数据库如何解释该命令。在数据库更改的情况下,此查询可能不再起作用,并且迁移将中断。那么,有没有办法表达Rails中某个列的默认设置的撤消?

5
检查Rails中是否存在表
我有一个rake任务,除非存在一个表,否则该任务将无法工作。我正在与一个网站上的20多位工程师合作,因此我想确保他们已经迁移了表,然后他们才能执行瑞克任务,该任务将填充相应的表。 AR是否有诸如此类的方法Table.exists?如何确保他们已成功迁移表?




1
rails中的t.belongs_to和t.references有什么区别?
t.references和之间有什么区别t.belongs_to?为什么我们有这两个不同的词?在我看来,他们做同样的事情?尝试了一些Google搜索,但没有找到解释。 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

4
如何生成迁移以使引用多态
我有一个产品表,想添加一列: t.references :imageable, :polymorphic => true 我正在尝试通过执行以下操作来生成迁移: $ rails generate migration AddImageableToProducts imageable:references:polymorphic 但我显然做错了。有人可以提出任何建议吗?谢谢 当我尝试在生成迁移后手动将其放入时,我这样做是这样的: class AddImageableToProducts < ActiveRecord::Migration def self.up add_column :products, :imageable, :references, :polymorphic => true end def self.down remove_column :products, :imageable end end 而且仍然没有用

9
回滚失败的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 结果: == SimpleTest:迁移============================================= ======== -add_column(:assets,:test,:integer) -> 0.0932秒 -add_column(:asset,:error) 耙子流产了! 发生错误,所有后来的迁移都被取消: …


6
Rails迁移:表的add_reference但外键的列名与Rails Convention不同
我有以下两个模型: class Store < ActiveRecord::Base belongs_to :person end class Person < ActiveRecord::Base has_one :store end 这是问题所在:我正在尝试创建一个迁移,以在人员表中创建外键。但是,引用Store外键的列并未像rails约定那样被命名为store_id,而是被命名为foo_bar_store_id。 如果我遵循Rails约定,我将进行如下迁移: class AddReferencesToPeople < ActiveRecord::Migration def change add_reference :people, :store, index: true end end 但是,这将不起作用,因为列名不是store_id而是foo_bar_store_id。因此,如何指定外键名称只是不同,但仍保持index:true以保持快速性能?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.