我是Ruby的新手,并试图完成一个我无法正常工作的教程。我试图在我的根文件夹上运行rake db:migrate
并给出3个单独的错误消息:
>rake db:migrate
rake aborted!
SyntaxError:
C:/Users/Bill/Sites/simple_cms/db/migrate/20170922050429_create_use
rs.rb:4: syntax error, unexpected keyword_do_block
create_table :users, do |t|
^
C:/Users/Bill/Sites/simple_cms/db/migrate/20170922050429_create_users.rb:5:
syntax error, unexpected tSTRING_BEG, expecting keyword_end
t.column "first_name", :string, :limit => 25
^
C:/Users/Bill/Sites/simple_cms/db/migrate/20170922050429_create_users.rb:5:
syntax error, unexpected ',', expecting keyword_end
t.column "first_name", :string, :limit => 25
^
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
我的create_users.rb
文件中的Ruby代码是:
class CreateUsers < ActiveRecord::Migration[5.1]
def change
create_table :users, do |t|
t.column "first_name", :string, :limit => 25
t.string "last_name", :limit => 50
t.string "email", :default => "", :null => false
t.string "password", :limit => 40
t.timestamps
end
end
我不确定我在这里做错了什么。任何见解都将不胜感激!
答案 0 :(得分:2)
除了第一个答案。你为什么不使用rails generator?
当您必须修改某些内容时,写入迁移可能很有用。更快更干净的方式是使用轨道发生器:
示例:
rails g model User first_name:string last_name:string
如果属性是字符串,则可以
rails g model User first_name last_name
它将在/app/models/user.rb中生成类User并为数据库生成迁移。
你也有Scaffold和其他发电机。
更多信息:Command Line Rails
提示:检查Devise Gem,它将为用户模型生成整个结构。
链接:Devise Gem
答案 1 :(得分:1)
在您的代码中:
def change
create_table :users, do |t|
t.column "first_name", :string, :limit => 25
t.string "last_name", :limit => 50
t.string "email", :default => "", :null => false
t.string "password", :limit => 40
t.timestamps
end
end
你有:
create_table :users, do |t|
应该是:
create_table :users do |t|
之后不应该有任何逗号,除非你有多个参数。
<强>更新强>
而且class
没有end
,它不会关闭类定义并抛出异常。
旁注:
你有这一行:
t.column "first_name", :string, :limit => 25
可以写成:
t.string "first_name", :limit => 25
希望这有帮助。