我正在学习 Lynda 课程,并且正在迁移数据库。因此,首先,我的新版 Rails (3.2.6) 中的默认语法似乎与视频中的相比存在一些语法差异,但我查看了 Ruby 网站并发现这可能无关紧要.
但是,我遇到的问题是,在创建Users
定义要放入的列(属性)的模型时,它会创建所有内容,除了我自己定义的那些(名字、姓氏、电子邮件和密码)不会得到创建的。我假设只有创建日期、修改日期和 ID 可以,因为它们是默认的,并且开箱即用。
这是视频告诉您使用的代码:
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.string "first_name", :limit => 25
t.string "last_name", :limit => 50
t.string "email", :default => "", :null => false
t.string "password", :limit => 40
t.timestamps
end
end
def down
drop_table :users
end
end
我在下面的差异周围放了两个星号,主要的是def up
我的版本中的默认值,但在视频版本中它是def self.up
. 当我阅读 Rails 网站上的文档时,我注意到的另一件事是,您应该使用:
. 由于视频给出的代码不起作用,我也尝试了下面的代码。但是我得到了相同的结果,t.strings
实际上没有在表中创建。
class CreateUsers < ActiveRecord::Migration
**def up**
create_table :users do |t|
t.string **:**first_name, :limit => 25
t.string **:**last_name, :limit => 50
t.string **:**email, :default => "", :null => false
t.string **:**"password", :limit => 40
t.timestamps
end
end
**def down**
drop_table :users
end
end
所以两个问题:
我没有使用正确的语法吗?
第一次“设置”表后,如果再次设置,它会覆盖旧配置吗?我必须再次创建一个全新的数据库吗?我不确定通过更改“用户”文件并重新排列语法,然后执行 rake db:migrate 是否可以覆盖所有内容。
非常感谢你的帮助。
-戴夫