私が持っている私は、ベースモデルから継承する複数のモデル持ってどこに設定 - 標準の単一テーブル継承:STIテーブル/モデリングスキーマでは、どのようにすべてのタイプで共有されるタイプ固有の属性を持つことができますか?
class Parent < ActiveRecord::Base
end
class A < Parent
end
class B < Parent
end
マイSTIの設定が正しく、素晴らしい作品を!しかし、私は追加したい:descriptionのような型固有の属性。
は例えば、私は、「私は親のタイプです。のために...私の関数である」、親のすべての種類の説明をしたい、私は何度も(データの複製を避けたい
Aの各インスタンスには同じ記述が格納されています)。
最初に、これは、サブクラスでモデル固有のメソッドを持つことでした。だから、のようなもの:これは本当にサブクラスの特定のタイプのデータ(というよりもサブクラスのインスタンス自体に)あるので
class A < Parent
def self.description
"I am the A type of Parent. My function is for..."
end
end
私はこのソリューションを好きではない、あなたは、この動作を行うことに付属しているすべての問題を取得します(データの変更などの展開)
これを行うにはこれが唯一の方法ですか、それとも別の方法がありますか?
としてルビーダックタイピングを使用することを好みます。 before_save関数をよりダイナミックにする必要があると思いますが(idの値はハードコードされていません)、アイデアは同じです!どうもありがとうございました。潜在的なアイデアを募集するために質問を開いたままにしておきますが、確かにそれを解決しました。 –
@LewaaBahmadそれを聞いてうれしいです。実際の実装ではなく、思考のためのコードとしてコードを取ってください。 'id'をハードコーディングするのは非常に嫌です。 :D – jdno
ああ、絶対に。あなたは非常に蒸留された方法でコンセプトを提示しましたが、私はそれを感謝します。私はあなたが私がそれをスパイクするときに私の実装を共有します。 –