Ruby on rails 执行rake db时在seed.rb中获取错误:seed已中止
我正在尝试在seed.rb文件中创建一些数据。当我尝试执行Ruby on rails 执行rake db时在seed.rb中获取错误:seed已中止,ruby-on-rails,ruby,ruby-on-rails-4,rake,Ruby On Rails,Ruby,Ruby On Rails 4,Rake,我正在尝试在seed.rb文件中创建一些数据。当我尝试执行rake db:seed时,出现以下错误: $ rake db:seed /Users/romenigld/workspace/ebook/beginning_rails_4_3rd_edition/blog/db/seeds.rb:1: warning: encountered \r in middle of line, treated as a mere space rake aborted! SyntaxError: /Us
rake db:seed
时,出现以下错误:
$ rake db:seed
/Users/romenigld/workspace/ebook/beginning_rails_4_3rd_edition/blog/db/seeds.rb:1: warning: encountered \r in middle of line, treated as a mere space
rake aborted!
SyntaxError: /Users/romenigld/workspace/ebook/beginning_rails_4_3rd_edition/blog/db/seeds.rb:1: syntax error, unexpected tCONSTANT, expecting end-of-input
Category.create([{:name => 'Programmi...
... ^
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:268:in `load'
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:268:in `block in load'
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:268:in `load'
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/railties-4.2.5.1/lib/rails/engine.rb:547:in `load_seed'
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.5.1/lib/active_record/tasks/database_tasks.rb:250:in `load_seed'
/Users/romenigld/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.5.1/lib/active_record/railties/databases.rake:183:in `block (2 levels) in <top (required)>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)
My user.rb:
class User < ActiveRecord::Base
has_one :profile
has_many :articles, -> { order('published_at DESC, title ASC')},
:dependent => :nullify
end
class用户:nullify
结束
My category.rb:
class Category < ActiveRecord::Base
has_and_belongs_to_many :articles
end
类别
My article.rb:
class Article < ActiveRecord::Base
validates_presence_of :title, :body
belongs_to :user
has_and_belongs_to_many :categories
def long_title
"#{title} - #{published_at}"
end
end
类文章
在创建文章之前,请执行以下操作:
class CreateArticlesCategories < ActiveRecord::Migration
def change
create_table :articles_categories, :id => false do |t|
t.references :article
t.references :category
end
end
def self.down
drop_table :articles_categories
end
end
class-CreateArticlesCategoriesfalse do | t|
t、 参考文献:文章
t、 参考文献:类别
结束
结束
def自动关闭
下拉列表:文章类别
结束
结束
并创建模型类别:
class CreateArticlesCategories < ActiveRecord::Migration
def change
create_table :articles_categories, :id => false do |t|
t.references :article
t.references :category
end
end
def self.down
drop_table :articles_categories
end
end
class-CreateArticlesCategoriesfalse do | t|
t、 参考文献:文章
t、 参考文献:类别
结束
结束
def自动关闭
下拉列表:文章类别
结束
结束
您收到的错误只是语法错误。
这是Rails在seed.rb中提供的示例代码
# Examples:
#
# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
# Mayor.create(name: 'Emanuel', city: cities.first)
这是你的密码
Category.create([{:name => 'Programming'},
{:name => 'Event'},
{:name => 'Travel'},
{:name => 'Music'},
{:name => 'TV'}])
尝试将代码重新格式化为示例提供的语法-
Category.create([
{ name: 'Programming'},
{ name: 'Event'},
{ name: 'Travel'},
{ name: 'Music'},
{ name: 'TV'}
])
我相信对于db的种子设定,你唯一一次使用散列火箭是在数组之外的种子设定,我可能是错的,只是一个想法
希望这有帮助 这是你的整个
seeds.rb
文件,还是仅仅是一个片段?你好,迈克尔,我正在看一本电子书,现在这是全部内容。谢谢你!如果您复制并粘贴了此代码,请尝试下面Marko的答案。根据错误上方的警告判断,该行包含一个\r字符,这可能导致您的错误。这是一个回车符,所以你只能看到一个普通的换行符。这两种样式是可以互换的。散列火箭是老办法;“键:值”方式较新。两者都是合法的。哦,好的。我不确定,因为我在过去遇到过一些像这样奇怪的问题。只是想确定这不是真的。请更新,如果你找到一个解决方案,我很好奇它是什么,所以我只是做了一些关于整个哈希火箭语法和种子的研究。应该是第一行的语法。这个错误,从我所看到的,通常与忘记在抛出错误之前结束某件事情有关。我会检查哈希火箭的语法,以确保它是正确的。祝你好运
Category.create([
{ name: 'Programming'},
{ name: 'Event'},
{ name: 'Travel'},
{ name: 'Music'},
{ name: 'TV'}
])