【发布时间】:2021-05-11 13:40:42
【问题描述】:
我正在开发一个 Ruby on Rails 6 项目,我正在尝试在 ActiveRecord 模型上使用class instance variable。这是一个基本示例:
class Model << ApplicationRecord
@var = AnotherClass.new
class << self
attr_reader :var
end
# ...
end
然后我希望能够使用Model.var 访问Model 的AnotherClass 实例。有多个这样的模型,每个模型都引用不同的AnotherClass,所有AnotherClasses 都是一些BaseClass 的子类。
但是,我遇到了以下错误:
未初始化的常量 Model::AnotherClass
因为class << self,Ruby 似乎在寻找嵌套类。
有没有办法直接访问AnotherClass,还是有更好的方法来设置它?
编辑:我用完全不同的方法解决了这个问题,但是我仍然有兴趣看看你将如何解决这个问题。
【问题讨论】:
-
你遇到的错误是告诉你没有找到常量
AnotherClass。你确定是加载?AnotherClass在哪里?lib/中的任何内容都不会被自动加载器覆盖,在这些情况下您需要首先require 'another_class'(或将其添加到自动加载路径中)。 -
@3limin4t0r 谢谢,我在您发表评论前大约十 10 秒发现了这一点。 ;) 如果您发布答案,我会接受。
标签: ruby-on-rails ruby