2017-09-22 19 views
-1

Rubyの新機能で、うまく動作しないチュートリアルを完了しようとしています。私は私のルートフォルダにrake db:migrateを実行しようとしていますし、私は3つの個別のエラーメッセージを与えている:MySQL構文エラー:予期せぬキーワード_do_block

>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 

私は私がやっているかわからないですここで間違っている。どんな洞察にも感謝します!あなたのコードで

答えて

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| 

使用すると、1つ以上のものを持っていない限り、それ以降の任意のカンマがあるべきではありませんそこに議論がある。

更新:

そしてまた、あなたclassは、クラス定義を閉じて、例外をスローしないというendを持っていません。サイドノートでは

あなたはこのラインを持っていますように書くことができ

t.column "first_name", :string, :limit => 25 

t.string "first_name", :limit => 25 

は、この情報がお役に立てば幸いです。

+0

大部分の問題を解決しました。ありがとうございます!今すぐエラーが発生しました: "予期しないend-of-end、keyword_end end ^を期待していますか?" – BaracudaBill

+0

もう1つ、最後の 'end'を追加してください。あなたのクラスは 'end'ステートメントを持たないので、 – Deep

+0

素晴らしいです、あなたの助けてくれてありがとう! – BaracudaBill

2

最初の回答に加えて。なぜレールジェネレータを使用しないのですか?

何かを変更する必要がある場合は、移行の移行を有効にすることができます。属性が文字列であれば、あなただけの

rails g model User first_name last_name 

それは/app/models/user.rbでクラスのユーザーを生成しますすることができます

rails g model User first_name:string last_name:string 

例:より速く、きれいな方法は、レール・ジェネレータを使用していますおよびデータベースの移行。

また、Scaffoldと他の発電機もあります。

さらに詳しい情報:Command Line Rails

ヒント:工夫宝石を確認するには、それがユーザーモデルの全体構造を生成します。

リンク:Devise Gem

関連する問題