2013-02-02 31 views
8

tôi đã sử dụng Rails scaffolding để tạo ra một mô hình sử dụng các lệnh từ nhà ga:rake db: di chuyển cho 'bất ngờ n' lỗi

rails generate scaffold Venue venueid:string, venueName:string, venueAddress:string, venueCity:string, venueState:string, venueZip:integer, venuePhone:string, venueAge:int 

Mọi thứ dường như để cài đặt hoặc tạo ra sao, nhưng khi tôi chạy rake db:migrate tôi nhận được các lỗi sau:

rake aborted! 
/Users/Banderson/Documents/demo/db/migrate/20130202222224_create_venues.rb:5: syntax error, unexpected '\n' 

     t.string, :venueName 
^ 
org/jruby/RubyKernel.java:1062:in `require' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:251:in `require' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:236:in `load_dependency' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:251:in `require' 
/Users/Banderson/Documents/demo/db/migrate/20130202222224_create_venues.rb:537:in `load_migration' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activerecord-3.2.10/lib/active_record/migration.rb:533:in `migration' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activerecord-3.2.10/lib/active_record/migration.rb:528:in `migrate' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activerecord-3.2.10/lib/active_record/migration.rb:720:in `migrate' 
org/jruby/RubyProc.java:270:in `call' 
org/jruby/RubyProc.java:220:in `call' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activerecord-3.2.10/lib/active_record/migration.rb:775:in `ddl_transaction' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activerecord-3.2.10/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activerecord-3.2.10/lib/active_record/transactions.rb:208:in `transaction' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activerecord-3.2.10/lib/active_record/migration.rb:775:in `ddl_transaction' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activerecord-3.2.10/lib/active_record/migration.rb:719:in `migrate' 
org/jruby/RubyArray.java:1620:in `each' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activerecord-3.2.10/lib/active_record/migration.rb:700:in `migrate' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activerecord-3.2.10/lib/active_record/migration.rb:570:in `up' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activerecord-3.2.10/lib/active_record/migration.rb:551:in `migrate' 
/Users/Banderson/.rvm/gems/jruby-1.6.8/gems/activerecord-3.2.10/lib/active_record/railties/databases.rake:179:in `(root)' 
org/jruby/RubyProc.java:270:in `call' 
org/jruby/RubyProc.java:220:in `call' 
org/jruby/RubyArray.java:1620:in `each' 
org/jruby/RubyArray.java:1620:in `each' 
org/jruby/RubyKernel.java:1087:in `load' 
Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

tôi đang làm gì sai, hoặc làm thế nào tôi có thể sửa chữa nó?

Trả lời

25

Hãy thử

rails generate scaffold Venue venueid:string venueName:string venueAddress:string venueCity:string venueState:string venueZip:integer venuePhone:string venueAge:int 

để thay thế. Bạn không nên có dấu phẩy ở giữa mỗi trường.

Với dấu phẩy, bạn đang tạo ra một sự chuyển đổi với điều này trong đó:

create_table :venues do |t| 
    t.string, :venueid 
    t.string, :venueName 
    t.string, :venueAddress 
    t.string, :venueCity 
    t.string, :venueState 
    t.integer, :venueZip 
    t.string, :venuePhone 
    t.int :venueAge 

    t.timestamps 
end 

Như bạn có thể thấy, mỗi t.string/integer/etc. cuộc gọi phương thức có dấu phẩy trước khi có bất kỳ đối số nào, không hợp lệ. Nếu làm được điều này:

puts, "hi" 

tôi nhận được lỗi

syntax error, unexpected '\n', expecting tCOLON2 or '[' or '.' 

đó cũng tương tự như lỗi mà bạn đã có.

tldr: không sử dụng dấu phẩy trong máy phát điện

+0

không cần chuỗi vì đó là mặc định. Rất khuyến khích venue_id: số nguyên – mathieugagne

Các vấn đề liên quan