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

  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 に答える