1

私の単一テーブル継承システムは、サービスからの入力文字列に基づいてサブクラスを作成します。不格好に見えるので、このコードを書くためのより良い方法があるかどうか疑問に思っています。

クライアントは、私のサブクラス構造が何であるかを知る必要はなく、気にする必要もありません。リクエストが来ると、私が取得するパラメータは次のとおりです。

{calculator: {course: 'science'}} 

クラス:

class Calculator < ActiveRecord::Base
  before_save :subclass, on: :create

  def subclass
    case course.downcase
    when "science"
      self.type = "Calculator::ScientificCalc"
    when "standard"
      self.type = "Calculator::StandardCalc"
    end
  end
end

オブジェクトにコールバックを設定してから「self.type」を設定するのは臭いようです。これに対するより良い解決策を持っている体はありますか?

4

1 に答える 1