Tag: 迁移

rails(3.2)中的关联和(多个)外键:如何在模型中描述它们,并编写迁移

我有3个模型:问题,选项,规则 问题has_many选项; 选项需要question_id的外键 规则表由3个foreign_keys组成: 2列/对question_ids的引用 – >名为’assume_question_id’和’consequent_question_id’的外键 1列/对option_id的引用 – >名为option_id或condition_id的外键 规则关联:问题有多个规则; 和Option has_one规则 我想了解如何为此编写迁移,以及如何与我在模型中编写的’has_many’/’belongs_to’语句以及我可以包含在模型中的’:foreign_key’选项相关联。 我有这个用于我的Option迁移,但我不确定“add_index”语句如何在外键方面起作用,以及如何将它用于我的规则迁移:(我的问题和选项模型有适当的has_many和belongs_to语句 – 并且工作正常) class CreateOptions < ActiveRecord::Migration def change create_table :options do |t| t.integer :question_id t.string :name t.integer :order t.timestamps end add_index :options, :question_id end end 感谢您的帮助!

在迁移中添加行

我想知道哪些是在Rails迁移中向数据库表添加记录的首选方法。 我读过Ola Bini的书(Jruby on Rails),他做了类似这样的事情: class CreateProductCategories < ActiveRecord::Migration #defines the AR class class ProductType “type”) end end 这很干净但是由于某种原因,它不适用于持续版本的导轨…… 问题是,如何使用默认数据(如用户或其他东西)填充数据库? 谢谢!

Rails 4.将表id迁移到UUID

我有一个表: db / migrate / 20140731201801_create_voc_brands.rb: class CreateVocBrands < ActiveRecord::Migration def change create_table :voc_brands do |t| t.string :name t.timestamps end end end 但我需要将表更改为此(如果我将从零创建它): class CreateVocBrands false do |t| t.uuid :id, :primary_key => true t.string :name t.timestamps end add_index :voc_brands, :id end end 如何使用迁移更改此设置?

Rails迁移将字符串转换为整数?

是否可以将字符串的字段更改为整数而不清除已输入的数据? 有问题的表的当前db结构是: create_table :people do |t| t.string :company_id 这可能是使用迁移吗? 我想也许在迁移中删除旧字段,创建一个整数的新字段 – 但我担心这将清除已经输入的所有数据。 谢谢, 丹尼

多个外键引用RoR中的同一个表

我希望客户引用两个地址模型,一个用于帐单地址,另一个用于送货地址。 据我了解,外键由其名称决定,如_id。 显然我不能命名两行address_id(引用Address表)。 我该怎么办? create_table :customers do |t| t.integer :address_id t.integer :address_id_1 # how do i make this reference addresses table? # other attributes not shown end

如何在rails迁移中设置ruby中的主键?

如何为我的IdClient字段设置主键? 我已经尝试了所有方法,但我会得到错误(rails 3.0.9)…你能帮助我吗? class CreateCustomers true) end end def self.down drop_table :customers end end 还有如何在模型中设置关系?

如何在不先删除数据库的情况下将带有rails的数据库迁移到第一个修订版?

我为我的Rails安装设置了一个数据库,并设置了一些迁移。 我希望能够将我的数据库重置为没有表/约束/等等,但是在不知道迁移次数或第一次迁移的时间戳的情况下找不到合理的方法。 我看到以下是我的选择: rake db:migrate:reset rake db:migrate:down VERSION=20090701154839其中20090701154839是与第一次迁移相关的时间戳 rake db:rollback STEP=15 ,其中有15次迁移 db:migrate:reset的问题在于它首先丢弃数据库(它执行db:drop , db:create ,然后db:migrate )。 db:migrate:down是我不想编码开头的VERSION。 db:rollback的问题在于我不知道它回到开头的步骤数。 我有什么选择?

关于迁移:nil的未定义方法`to_sym’:NilClass

我正在运行Rails 3.0.3并且在我的迁移中意外地犯了一个错字:我创建了一个迁移,它创建了一个boolen类型的新列(它应该是boolean )。 我运行了迁移,Rails没有警告我这是一个无效的列类型,我可以在以前的版本中发誓它吗? 现在每当我尝试添加,删除或修改迁移中的任何内容时,我都会收到以下错误: nil的未定义方法`to_sym’:NilClass 我甚至无法回滚或丢弃。 我有一个早期版本的数据库和文件树保存,但这个问题让我发疯,因为这不是我第一次看到这种情况发生。 如何在没有Rails抱怨的情况下有效地删除列(最好不要手动挖掘数据库)?

Rails通过迁移很容易

在我这样做之后我和我的模特做了多对多的关联: class Competence < ActiveRecord::Base has_many :behaviour, through: :behaviours_rel has_many :stabilizer, through: :stabilizers_rel end class Behaviour < ActiveRecord::Base belongs_to :competence end class Stabilizer < ActiveRecord::Base belongs_to :competence end 我必须做类似的迁移 rails generate migration behaviour:belongs_to 但它不起作用我没有得到使用rails generate进行此迁移的逻辑 我试图保存一系列的行为能力,因此不需要一对多的rel 顺便说一句,我不想​​明确地使用sql表,所以有没有办法在rails中进行此迁移?

脚手架后无法迁移数据库。 2.2节Ruby on Rails教程Michael Hartl

我正在研究Hartl ruby​​ on rails教程(第2.2节),我在迁移数据库时遇到了麻烦。 一切似乎都在工作,然后我运行rails generate scaffold User name:string email:string后来我试图运行bundle exec rake db:migrate并得到以下错误信息: $ bundle exec rake db:migrate == 20141125234257 CreateUsers: migrating ====================================== — create_table(:users) -> 0.0079s == 20141125234257 CreateUsers: migrated (0.0080s) ============================= rake aborted! StandardError: An error has occurred, this and all later migrations canceled: wrong number of arguments (1 for 0)/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/connection_adapters/abstract_adapter.rb:271:in `initialize’ /usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/connection_adapters/abstract_adapter.rb:271:in […]