红宝石需要相对问题

时间:2018-11-03 15:24:41

标签: ruby-on-rails ruby

您好,我正在尝试学习如何在Rails应用程序上制作红宝石。我陷入了require_relative语法。当前,我有一个game_runner.rb文件,该文件不在app目录中,该文件应该从模型中的role.rb获取方法(who_is_hider)。我输入正确吗?当我运行当前代码时,出现“未初始化的常量ApplicationRecord”错误。因为我有一个application_record.rb文件,里面有(self.abstract_class = true),所以这没有任何意义。谢谢您的宝贵时间。

image

game_runner.rb

require_relative './app/models/Role'
who_is_hider

role.rb

class Role < ApplicationRecord
  belongs_to :round
  belongs_to :player
  enum label: {seeker: 1, hider: 2, decoy: 3}

  validates :player_id, uniqueness: {scope: :round_id}

  def who_is_hider    
    p "made it here"   
  end
end

application_record.rb

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
end

2 个答案:

答案 0 :(得分:0)

  

我坚持使用require_relative语法。 […]我输入正确吗?运行当前代码时,出现“未初始化的常量ApplicationRecord”错误。

是的,您的语法正确。如果您的语法不正确,则您的代码甚至根本不会运行,您会得到SyntaxError。您的代码确实运行并产生NameError异常的事实毫无疑问表明您的语法正确。

作为检查语法是否正确的简便方法,您可以

  • 直观地检查编辑器中的语法颜色,
  • 以可视方式检查Stack Overflow问题中的语法颜色,如果您发布了
  • 运行ruby -c来检查语法

如果有可用的话,最后一个是首选。但是有时候,您是在没有可用的Ruby执行引擎的环境中编写代码的,在这种情况下,您至少可以使用编辑器,或者甚至(肯定不是很好,很容易混淆)来突出显示Stack Overflow用途。尽管特别是后一种情况不是很好,但它仍然确实强调由错别字引起的容易犯的错误,例如未终止的字符串文字。

答案 1 :(得分:0)

嗯,您使用的是单个ruby文件,希望加载所有rails环境吗?您的角色模型了解ApplicationRecord,因为Rails在后台加载了很多东西。如果Rails不在中间,那么您必须明确地告诉加载想法。您可以在game_runner文件上或在role.rb内要求ApplicationRecord,但随后还必须要求ActiveRecord。

我认为做您想做的事不是一个好主意。如果您不想运行某些取决于您的环境的脚本,建议您使用rake任务,它将处理环境的加载。如果您仍然想按原样运行game_runner.rb,则必须导入解释器抱怨的所有内容,直到其生效。

相关问题