【问题标题】:What is this seed error trying to tell me?这个种子错误试图告诉我什么?
【发布时间】:2018-03-13 23:34:51
【问题描述】:

我正在制作一个与漫画书有关的 RoR 应用程序,但在使用 rails db:seed 命令后我不断收到此错误:

rails aborted!

SyntaxError: 

/Users/cggarcia171/Desktop/environment/ComicApp/db/seeds.rb:9: syntax 
error, unexpected tLABEL
ch1 = Character.create (alias:'Doctor Manhattan', name: 'Dr.
                          ^
/Users/cggarcia171/Desktop/environment/ComicApp/db/seeds.rb:9: syntax 
error, unexpected ',', expecting end-of-input 
ate (alias:'Doctor Manhattan', name: 'Dr. Jonathan 'Jon' Ost
                          ^

这是我的一些代码:

ch1 = Character.create 
(alias:'Doctor Manhattan', 
 name: "Dr. Jonathan 'Jon' Osterman", 
 image: 'Doctor_Manhattan.jpg', 
bio: 'He was originally 
Dr. Jonathan Osterman, a nuclear physicist who in 1959 was transformed 
into one of the most supreme beings of DC Comics, after initially being 
disintegrated in an Intrinsic Field Subtractor and later reconstructing 
himself. Following his reanimation, he was immediately pressed into 
service by the United States government, who gave him the name Doctor 
Manhattan, after the Manhattan Project. He is the only character in the 
story that possesses actual superpowers.')

【问题讨论】:

    标签: ruby-on-rails command-line terminal


    【解决方案1】:

    我在您的代码中看到至少三个错误:

    1. Ruby 实际上对空格敏感。 m (a, b)m(a, b) 是完全不同的东西,第一个是语法错误(因为 Ruby 试图将括号解释为分组括号但 (a, b) 不是有效的表达式),而第二个是带有两个参数的方法调用.

      删除Character.create( 之间的空格。

    2. :name 的值包含未正确转义的嵌套单引号。你应该有:

      name: 'Dr. Jonathan \'Jon\' Osterman'
      

      或双引号,%q{...}

    3. :bio 值没有结束引号。

    【讨论】:

    • 谢谢,这帮助很大。现在我收到一条错误消息,提示“ActiveModel::UnknownAttributeError: Character 的未知属性‘别名’。”但我的 .rb 中有“t.string :alias”,就像其他的一样。
    • 迁移是否已运行?该列实际上在数据库中吗? db/schema.rb 是否提及您的 alias 专栏?也许您在运行迁移后对其进行了编辑,如果是这样,那么您需要撤消该编辑并添加一个添加 alias 列的新迁移。
    • 当我运行架构时,它告诉我权限被拒绝,但我已经完成了“rails db:migrate”
    • 别跑schema.rb,看看。然后直接看数据库。然后考虑将其重命名为其他名称(例如aka)以避免与alias 关键字发生任何可能的冲突。
    • 我明白你的意思。除了在创建和更新的东西之外,它在该文件中没有说明任何内容。它应该是什么样子?
    【解决方案2】:

    name: 'Dr. Jonathan 'Jon' Osterman' 行是断线。众所周知,解析器错误会在实际错误发生后一瘸一拐,然后抱怨一些不相关的事情。试试name: "Dr. Jonathan 'Jon' Osterman"

    然后正确格式化您的种子,使用大量换行符,以帮助每个人了解发生了什么!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-23
      • 1970-01-01
      相关资源
      最近更新 更多