Ruby on rails 正在等待迁移;使用rails 4进行depot_g敏捷web开发
我需要你的帮助。Ruby on rails 正在等待迁移;使用rails 4进行depot_g敏捷web开发,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我需要你的帮助。 我的RubyonRails教程(Rails4的敏捷web开发,BlockG)给了我一个错误。我是Ruby新手,不知道如何修复它 来源: class CombineItemsInCart < ActiveRecord::Migration def up Cart.all.each do |cart| # how many goods are in the cart? sums = cart.line_items.grou
我的RubyonRails教程(Rails4的敏捷web开发,BlockG)给了我一个错误。我是Ruby新手,不知道如何修复它 来源:
class CombineItemsInCart < ActiveRecord::Migration
def up
Cart.all.each do |cart|
# how many goods are in the cart?
sums = cart.line_items.group(:product_id).sum(:quantity)
sums.each do |product_id; quantity|
if quantity > 1
# remove lines
cart.line_items.where(:product_id product_id).delete_all
# replace with a one line
item = cart.line_items.build(product_id: product_id)
item.quantity = quantity
item.save!
end
end
end
end
end
类组合ItemsInCart1
#拆线
购物车.行\u项目.其中(:产品\u id产品\u id).全部删除
#替换为一行
item=cart.line\u items.build(产品标识:产品标识)
item.quantity=数量
物品。保存!
终止
终止
终止
终止
终止
错误是:
正在等待迁移;运行“rake db:migrate RAILS_ENV=development”到
解决这个问题
但是当我试图运行rake db:migrate时,我在终端中收到了这个错误: rakedb:migraterails\u ENV=development
雷克流产了!合成错误: /home/yury/Desktop/rails/depot\g/db/migrate/20170401195439\u组合购物车中的物品。rb:10: 语法错误,意外的tIDENTIFIER,应为“')” 购物车.行\u项目.其中(:产品\u id产品\u id).全部删除 ^/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activesupport-4.0.0/lib/active\u support/dependencies.rb:228:in
require'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activesupport-4.0.0/lib/active\u support/dependencies.rb:228:in
require中的块'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activesupport-4.0.0/lib/active\u support/dependencies.rb:213:in
加载依赖项'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activesupport-4.0.0/lib/active\u support/dependencies.rb:228:in
require'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activerecord-4.0.0/lib/active\u record/migration.rb:718:inload\u migration'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activerecord-4.0.0/lib/active\u record/migration.rb:714:in
migration'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activerecord-4.0.0/lib/active\u record/migration.rb:708:indisable\u ddl\u transaction'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activerecord-4.0.0/lib/active\u record/migration.rb:1012:in
使用交易
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activerecord-4.0.0/lib/active\u record/migration.rb:1004:in
ddl\u事务'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activerecord-4.0.0/lib/active\u record/migration.rb:958:in
execute\u migration\u in\u transaction'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activerecord-4.0.0/lib/active\u record/migration.rb:920:inblock in migrate'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activerecord-4.0.0/lib/active\u record/migration.rb:916:in
each'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activerecord-4.0.0/lib/active\u record/migration.rb:916:inmigrate'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activerecord-4.0.0/lib/active\u record/migration.rb:764:in
up'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activerecord-4.0.0/lib/active\u record/migration.rb:742:inmigrate'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/activerecord-4.0.0/lib/active\u record/railties/databases.rake:42:in
in'
/home/yury/.rvm/gems/ruby-2.0.0-p648/gems/rake-12.0.0/exe/rake:27:in
'
/home/yury/.rvm/gems/ruby-2.0.0-p648/bin/ruby\u可执行文件挂钩:15:in
eval'
/home/yury/.rvm/gems/ruby-2.0.0-p648/bin/ruby\u可执行文件挂钩:15:in
`'Tasks:TOP=>db:migrate(通过使用
--跟踪)
系统:Ubuntu 16.04 64位。
我检查了几次代码,它与书中的代码相同
有谁能帮我说说我做错了什么?我怎样才能修好它?
谢谢 正如它所说的“语法错误,意外的提示符,应为“')”
“然后,代码语法中有一个输入错误,并且在总和中。每个块,都要更改
sums.each do |product_id; quantity|
为了
在您的if
语句中
cart.line_items.where(:product_id product_id)
对此
cart.line_items.where(product_id: product_id)
检查手册中的原始代码:
# rails40/depot_g/db/migrate/20121130000005_combine_items_in_cart.rb
def up
# replace multiple items for a single product in a cart with a single item
Cart.all.each do |cart|
# count the number of each product in the cart
sums = cart.line_items.group(:product_id).sum(:quantity)
sums.each do |product_id, quantity|
if quantity > 1
# remove individual items
cart.line_items.where(product_id: product_id).delete_all
# replace with a single item
item = cart.line_items.build(product_id: product_id)
item.quantity = quantity
item.save!
end
end
end
end
# rails40/depot_g/db/migrate/20121130000005_combine_items_in_cart.rb
def up
# replace multiple items for a single product in a cart with a single item
Cart.all.each do |cart|
# count the number of each product in the cart
sums = cart.line_items.group(:product_id).sum(:quantity)
sums.each do |product_id, quantity|
if quantity > 1
# remove individual items
cart.line_items.where(product_id: product_id).delete_all
# replace with a single item
item = cart.line_items.build(product_id: product_id)
item.quantity = quantity
item.save!
end
end
end
end