当两个类具有相同名称时,Rails会出错

时间:2012-06-13 06:51:59

标签: ruby-on-rails ruby-on-rails-3 activerecord model

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

STI子类

class Subscription::Discount < Subscription
  def self.new_with_url
    ...
  end
end

和另一个模型类(完全不同的东西,这是一个STI基类)

class Discount < ActiveRecord::Base
end

所以在我的控制器中,我在创建用户时使用Subscription::Discount

@user.subscription = ::Subscription::Discount.new_with_url()

然而它抱怨:undefined method 'new_with_url' for #<Class:0x007fbb499c6740>

我认为Rails没有使用new_with_url调用正确的类。最重要的是,我不确定#<Class:0x007fbb499c6740>是什么。所以,有两个问题:

  1. 如果不重命名任何模型,我如何正确引用Subscription::Discount
  2. 为什么错误消息显示#<Class:0x007fbb499c6740>,我可以理解它是Discount而不是匿名类。
  3. 编辑:

    以下是所有相关模型:

    app/model/discount.rb
    app/model/coffee_discount.rb (CoffeeDiscount < Discount)
    app/model/subscription.rb
    app/model/subscription/discount.rb (Subscription::Discount < Subscription)
    

1 个答案:

答案 0 :(得分:0)

该方法名为create_with_url,但您正在调用new_with_url

修复方法名称。

相关问题