无法自动加载常量Auction,需要/app/models/configuration/auction.rb对其进行定义

时间:2018-11-07 11:01:49

标签: ruby-on-rails

所以我有两个类app/models/auction.rbapp/models/configuration/auction.rb

#app/models/auction.rb
class Auction
end

#app/models/configuration/auction.rb
class Configuration::Auction
  attr_accessor :auction_preferences
end

我收到错误

  

无法自动加载恒定的竞价,预期   /app/models/configuration/auction.rb进行定义

执行以下行时

(Configuration::Auction.new(user).enable_auction? ? Auction.get_details(user) : "NA")

2 个答案:

答案 0 :(得分:2)

具有两个核心名称相同的对象有时会使自动加载器感到头疼,因为它无法完全确定您要使用的命名空间。

您可以尝试对第二个Auction对象进行更明确的显示,并指​​定::Auction来表示您是指没有命名空间的类。

但是我也会考虑您的配置对象命名方案。在不了解对象模型的情况下,很难确切地说,但是对于配置对象来说,AuctionConfiguration可能是一个更好的模型名称。

答案 1 :(得分:0)

LoadError error的一个可能的根本原因是,从Rails 5.2.0开始,对自动加载进行了更改,这些更改要求(至少)需要定义子模块(命名空间)(作为常量)。

在原始帖子的示例中,module Configuration应该在app/models/configuration.rb文件中定义。

有关更多详细信息,请参阅此here