2013-02-02 14 views
8

użyłem Rails scaffolding aby model używając polecenia z terminala:rake db: migrować dając „niespodziewany n” Błąd

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

wszystko wydaje się zainstalować lub wygenerować w porządku, ale gdy uruchamiam rake db:migrate otrzymuję następujący błąd:

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) 

Co robię źle, lub jak mogę to naprawić?

Odpowiedz

25

Spróbuj

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

zamiast. Nie powinieneś mieć przecinków pomiędzy poszczególnymi polami.

Z przecinkami, jesteś generowania migrację z tym w tym:

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 

Jak widać, każdy t.string/całkowita/etc. wywołanie metody ma przecinek przed podaniem jakichkolwiek argumentów, co jest nieprawidłowe. Jeśli to zrobić:

puts, "hi" 

pojawia się błąd

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

który jest podobny do błędu trzeba było.

tldr: nie używaj przecinków w generatorze

+0

bez ciągów znaków, ponieważ jest to ustawienie domyślne. Zdecydowanie zachęć venue_id: integer – mathieugagne

Powiązane problemy