Tag: rails migrations

Rails 4:如何改变表列的默认值与迁移?

鉴于以下schema.rb : create_table "people", force: true do |t| t.string "name", null: false t.integer "age" t.integer "height" t.string "email" t.boolean "married", default: false t.text "bio" t.integer "fav_number" t.decimal "lucky_num", precision: 2, scale: 2 t.datetime "birthday" t.datetime "created_at" t.datetime "updated_at" end 我想删除null: false的name默认值。 我试过用change_column_default运行一个单独的迁移,但是这对schema.rb没有影响。 有什么build议么?

Ruby on Rails的varchar迁移问题

我创build了一个新的表格,包括一个“注释”列。 默认是varchar(255)我相信,但我希望这个列是一个文本区域与字段,并允许更多的数据。 我想我会在ActiveRecord :: Migration文件中做这个改变,但我很好奇格式。 例如,我是否简单地将varchar(255)更改为varchar(1000)? (如果是这样的格式? def self.up create_table :notes do |t| t.string :note :varchar(1000) end 这是正确的格式? 此外,我如何获得input字段为多行。 对不起,如果这是简单的东西,但我是编程和RoR的新手。 谢谢。

rails 3.2的迁移不能在create_table方法中添加索引

这里是我在rails 3.2.2中的迁移: class CreateStatistics < ActiveRecord::Migration def change create_table :statistics do |t| t.string :name t.integer :item_id t.integer :value t.text :desc t.timestamps t.index [:name, :item_id] end end end 这里是迁移错误: == CreateStatistics: migrating =============================================== — create_table(:statistics) ActiveRecord::ConnectionAdapters::TableDefinition rake aborted! An error has occurred, all later migrations canceled: undefined method `index' for #<ActiveRecord::ConnectionAdapters::TableDefinition:0xbd16888> Tasks: TOP => db:migrate (See […]

为什么要求运行'rake db:migrate RAILS_ENV = test'?

在Rails 4.0.0.rc1,Ruby 2.0.0中,运行迁移之后,当我尝试通过rspec运行testing时,发现以下错误: /Users/peeja/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/activerecord-4.0.0.rc1/lib/active_record/migration.rb:376:in`check_pending! ':迁移正在进行中; 运行'rake db:migrate RAILS_ENV = test'来解决这个问题。 (ActiveRecord的:: PendingMigrationError) 这看起来不正确。 没有人迁移他们的testing数据库,是吗? 他们db:test:prepare ,这是公平的 – 我忘记了。 所以我运行rake db:test:prepare并再次运行我的rspec命令…并查看相同的错误。 如果我真的rake db:migrate RAILS_ENV=test ,错误事实上消失了。 这是怎么回事? 这是新的Rails 4?

使用Rails迁移删除列将删除与该列关联的索引

在Rails 2中,使用Rails迁移删除列也会更改/删除与列相关的索引吗? 如果没有,而你必须手动更改/删除每个索引,不应该它自动? 谢谢(来自Rails新手)

当我运行rake:db migrate命令时,出现“Uninitialized constant CreateArticles”

我创build了一个模型ruby脚本/生成模型文章(简单的enuff) 这里是迁移文件create_articles.rb: def self.up create_table :articles do |t| t.column :user_id, :integer t.column :title, :string t.column :synopsis, :text, :limit => 1000 t.column :body, :text, :limit => 20000 t.column :published, :boolean, :default => false t.column :created_at, :datetime t.column :updated_at, :datetime t.column :published_at, :datetime t.column :category_id, :integer end def self.down drop_table :articles end end 当我运行rake:db migrate命令时,我收到一个错误耙子中止! “未初始化的常量CreateArticles”。 有谁知道为什么这个错误不断发生?

如何在Rails迁移中检查数据库types?

我有以下的迁移,我希望能够检查当前与环境相关的数据库是否是一个mysql数据库。 如果是mysql,那么我想执行特定于数据库的SQL。 我如何去做这件事? class AddUsersFb <ActiveRecord :: Migration def self.up add_column:users,:fb_user_id,:integer add_column:users,:email_hash,:string #if mysql #execute(“alter table users modify fb_user_id bigint”) 结束 def self.down remove_column:users,:fb_user_id remove_column:users,:email_hash 结束 结束

has_many,belongs_to在活动logging移动轨道中的关系4

我创build了一个User模型,后来又创build了一个Task模型。 我在创build时没有提到它们之间的任何关系。 我明白, User has_many Tasks和Task belongs_to User 。 我需要通过移民来build立他们之间的关系。 我的问题是,build立这种关系的移植生成命令是什么? 任何帮助将不胜感激。

我怎样才能从列表中删除使用轨道控制台的列

使用rails迁移很容易删除列。 class SomeClass < ActiveRecord::Migration def self.up remove_column :table_name, :column_name end end 我想知道是否有任何方式使用控制台从表中删除列。

Rails 3.1.0迁移中的remove_index的正确语法是什么?

我正在将Devise添加到现有的Rails应用程序中,并且已经定义了Users表。 devise生成器推出了以下迁移: class AddDeviseToUsers < ActiveRecord::Migration def self.up change_table(:users) do |t| ## Database authenticatable t.string :email, :null => false, :default => "" t.string :encrypted_password, :null => false, :default => "" ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable t.datetime :remember_created_at ## Trackable t.integer :sign_in_count, :default => 0 blah blah blah…. end add_index :users, :email, :unique […]