2013-02-02 8 views
8

ich Rails scaffolding verwendet, um ein Modell zu machen mit dem Befehl aus der Klemme:rake db: migrate ‚unerwartete n‘ Fehler geben

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

Alles scheint zu installieren oder erzeugen in Ordnung, aber wenn ich rake db:migrate betreibe ich bekommen der folgende Fehler:

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) 

Was mache ich falsch, oder wie kann ich es beheben?

Antwort

25

Versuchen

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

statt. Sie sollten die Kommas nicht zwischen den einzelnen Feldern haben.

Mit dem Komma, sind Sie eine Migration mit diesem darin zu erzeugen:

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 

Wie Sie sehen können, jede t.string/integer/etc. Der Methodenaufruf hat ein Komma, bevor Argumente angegeben werden. Dies ist ungültig. Wenn dies tun:

puts, "hi" 

Ich erhalte den Fehler

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

, die zu dem Fehler ähnelt Sie hatten.

tldr: Komma nicht in einem Generator verwenden

+0

keine Notwendigkeit für Zeichenfolge, da es die Standardeinstellung ist. Ermutigen Sie stark venue_id: integer – mathieugagne

Verwandte Themen