Rails:语法错误,意外的tIDENTIFIER,期待keyword_end

时间:2015-04-07 19:47:03

标签: ruby-on-rails ruby ruby-on-rails-3 terminal syntax-error

Ruby on Rails初学者。

在localhost:3000

中出现此错误

的ActiveRecord :: PendingMigrationError 迁移正在等待中。要解决此问题,请运行:bin / rake db:migrate RAILS_ENV = development

我在终端运行了rake db:migrate并得到了这个:

$ rake db:migrate
rake aborted!
SyntaxError: /Users/EuphoriaComplex/src/bookmarks/db/migrate/20150407050503_add_user_to_bookmark.rb:5: syntax error, unexpected tIDENTIFIER, expecting keyword_end

    add has_many :bookmarks to app/models/user.rb
                              ^
/Users/EuphoriaComplex/src/bookmarks/db/migrate/20150407050503_add_user_to_bookmark.rb:7: syntax error, unexpected tIDENTIFIER, expecting keyword_end

    add belongs_to :user to app/model/user.rb
                           ^

这是我在Sublime中的书签/ db / migrate中的代码:

class AddUserToBookmark < ActiveRecord::Migration
  def change
    add_column :bookmarks, :user_id, :integer

    add has_many :bookmarks to app/models/user.rb

    add belongs_to :user to app/model/user.rb
  end
end

我正在关注本教程:http://12devs.co.uk/articles/writing-a-web-application-with-ruby-on-rails/ 我只是去了#34;要求身份验证来管理你的书签&#34;

&#34;用户有很多书签&#34; 是相关部分。

2 个答案:

答案 0 :(得分:2)

错误告诉您问题的确切位置。

add has_many :bookmarks to app/models/user.rb
add belongs_to :user to app/model/user.rb

这不应该在迁移中,因为它们不会更改架构。您需要将这些添加到书签和用户模型中,所以

class Bookmark < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :bookmarks
end

答案 1 :(得分:0)

模型之间的关系放在模型中,迁移是针对数据库的,它是不同的......你应该保留add_column :bookmarks, :user_id, :integer,但是其他两行会从迁移中删除它们,你应该去你的{ {1}}模型并添加user.rb并转到has_many :bookmarks模型并添加bookmark.rb

也许您也可以阅读本指南,它可能有所帮助:http://guides.rubyonrails.org/index.html