私の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>
であるかわかりません。したがって、2つの質問:
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)