Ruby on rails 当两个类的名称相同时,Rails得到错误的类

Ruby on rails 当两个类的名称相同时,Rails得到错误的类,ruby-on-rails,ruby-on-rails-3,activerecord,model,Ruby On Rails,Ruby On Rails 3,Activerecord,Model,在我的Rails中,我有以下型号: STI子类 class Subscription::Discount < Subscription def self.new_with_url ... end end 但是它抱怨:未定义的方法“new_with_url”for# 我认为Rails没有使用new\u和类中定义 URL ,它是否被调用?是的,我只是用RoalsLogg.Debug来尝试它,它被调用并输出日志。如果是这样的话,请考虑Github.谢谢,我会尝试做一个最小的项目

在我的Rails中,我有以下型号:

STI子类

class Subscription::Discount < Subscription
  def self.new_with_url
    ...
  end
end
但是它抱怨:
未定义的方法“new_with_url”for#

我认为Rails没有使用
new\u和
调用正确的类。除此之外,我不确定什么是
#
。因此,有两个问题:

  • 在不重命名任何模型的情况下,如何正确引用
    Subscription::Discount
  • 为什么错误消息会说
    #
    ,我可以理解它是否是
    折扣
    ,而不是匿名类
  • 编辑:

    以下是所有相关模型:

    app/model/discount.rb
    app/model/coffee_discount.rb (CoffeeDiscount < Discount)
    app/model/subscription.rb
    app/model/subscription/discount.rb (Subscription::Discount < Subscription)
    
    app/model/discount.rb
    app/model/coffee_discount.rb(CoffeeDiscount<折扣)
    app/model/subscription.rb
    app/model/subscription/discount.rb(订阅::折扣<订阅)
    
    该方法名为
    create\u with\u url
    ,但您正在调用
    new\u with\u url


    修复方法名称。

    哦,很抱歉,当我复制并粘贴错误的方法时,这是我的输入错误,其中有两个方法,但我只显示了simplicityOk。如果您在代码< >折扣>代码>类中定义<代码> URL <代码>,它是否被调用?是的,我只是用RoalsLogg.Debug来尝试它,它被调用并输出日志。如果是这样的话,请考虑Github.谢谢,我会尝试做一个最小的项目来证明这个STI类在您的模型文件夹中吗?是的,它是,让我编辑帖子并列出所有相关的类
    @user.subscription = ::Subscription::Discount.new_with_url()
    
    app/model/discount.rb
    app/model/coffee_discount.rb (CoffeeDiscount < Discount)
    app/model/subscription.rb
    app/model/subscription/discount.rb (Subscription::Discount < Subscription)