私の単一テーブル継承システムは、サービスからの入力文字列に基づいてサブクラスを作成します。不格好に見えるので、このコードを書くためのより良い方法があるかどうか疑問に思っています。
クライアントは、私のサブクラス構造が何であるかを知る必要はなく、気にする必要もありません。リクエストが来ると、私が取得するパラメータは次のとおりです。
{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」を設定するのは臭いようです。これに対するより良い解決策を持っている体はありますか?