在我的 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>
。所以,两个问题:
- 在不重命名任何模型的情况下,如何
Subscription::Discount
正确引用? - 为什么错误消息说
#<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)