首页 > 解决方案 > 将列添加到模型时出现rails语法错误

问题描述

我正在尝试使用遇到错误的rails构建音乐应用程序,只是想知道有人知道这意味着什么吗?

当我这样做的时候

rails g migration add_quantity_to_line_items quantity:integer, default: 1
rails db:migrate

扔了回去

rails aborted!
SyntaxError: /Users/Code/Ruby/musicapp/db/migrate/20190605091214_add_quantity_to_line_items.rb:4: syntax error, unexpected tSYMBEG, expecting do or '{' or '('
    add_column :line_items, :default, :string
               ^
/Users/mrswordsmith/Code/Ruby/musicapp/db/migrate/20190605091214_add_quantity_to_line_items.rb:5: syntax error, unexpected tINTEGER, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
    add_column :line_items, :1, :string
class AddQuantityToLineItems < ActiveRecord::Migration[5.2]
  def change
    add_column :line_items, :quantity, :integer,
    add_column :line_items, :default, :string
    add_column :line_items, :1, :string
  end
end

标签: ruby-on-railsruby

解决方案


如果我理解正确,您想要实现的是:

class AddQuantityToLineItems < ActiveRecord::Migration[5.2]
  def change
    add_column :line_items, :quantity, :integer, default: 1
  end
end

您的迁移脚本中有 2 个错误:

  • 不能用逗号 ( ,)
  • 默认迁移生成器不处理默认值,您必须手动更新迁移。

所以迁移脚本应该只是rails g migration add_quantity_to_line_items quantity:integer


推荐阅读