1

在我的 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不是那个匿名类,我可以理解。

编辑:

以下是所有相关模型:

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

1 回答 1

0

该方法已命名create_with_url,但您正在调用new_with_url.

修复方法名称。

于 2012-06-13T08:12:01.900 回答