1

我是 Rails 的新手;我的问题是:我有一个用户表,我需要添加更多字段......

我把它放在哪里?我试图把它放在迁移文件中,但是当我运行rake db:migrate.

这是在我的迁移文件中:

def self.up
 create_table :users do |t|
  t.string :username,         :null => false  # if you use another field as a username, for example email, you can safely remove this field.
  t.string :email,            :default => nil # if you use this field as a username, you might want to make it :null => false.
  t.string :crypted_password, :default => nil
  t.string :salt,             :default => nil
  t.string :nombres,          :default => nil
  t.string :apellidos,        :default => nil
  t.string :codigo,           :default => nil
  t.string :fecha,            :default => nil
  t.string :zona,             :default => nil
  t.string :institucion,      :default => nil
  t.string :frecuencia,       :default => nil
  t.string :pregunta,         :default => nil
  t.string :respuesta,        :default => nil



  t.timestamps
  end

并且架构仍然没有新字段

create_table "users", :force => true do |t|
t.string   "username",                     :null => false
t.string   "email"
t.string   "crypted_password"
t.string   "salt"
t.string   "nombres"
t.string   "apellidos"
t.string   "codigo"
t.string   "fecha"
t.string   "zona"
t.string   "institucion"
t.string   "frecuencia"
t.datetime "created_at",                   :null => false
t.datetime "updated_at",                   :null => false
t.string   "remember_me_token"
t.datetime "remember_me_token_expires_at"
end

我应该怎么办?

4

2 回答 2

2

简单迁移

您可以使用迁移生成器:
$> rails g migration add_position_to_users position:integer
然后运行
$> rake db:migrate

更复杂的迁移

或更复杂的迁移,rails 还提供:
$> rails g migration add_body_and_pid_to_users body:string:index pid:integer:uniq:index
$> rake db:migrate

有关迁移的更多信息,请访问 railsguides http://guides.rubyonrails.org/migrations.html

于 2013-02-05T16:04:01.327 回答
1

我认为我们在这里没有提到的是将代码添加到迁移文件中。

我添加列的步骤是这样的:

# rails generate migration AddFieldName blah:string

在生成的迁移文件里面:

(顺便说一句,这通常看起来像:db/migrations/20130330115915_add_field_name.rb)

class AddFieldName < ActiveRecord::Migration
    def change
        add_column :table_name, :blah, :string
    end
end

进行此更改后,我然后运行 ​​db:migrate。然后,将该列添加到数据库中。

于 2013-03-30T12:11:26.673 回答