私が落書きしている Rails 4 アプリのモデルを構築する方法について意見が必要です。アーキテクチャはそれほど難しくないはずですが、私は何時間もぐるぐる回っているので、コミュニティに公開します。
has_many の「フィールド」を持つ「checkin」というモデルがあります。各フィールドには、時間の経過とともに数が増える可能性のあるいくつかのデータ型の 1 つである多くの値を含めることができますが、最初はfloat
とstring
. フィールドがチェックインに追加されると、そのデータ型は変更できません。
体重を減らすためのチェックインを考えてみてくださいweight
。weight
他の人は , をログに記録したいかもしれません%bodyfat
. 他のメトリクス用の追加フィールドや、気分を表すテキスト フィールドが必要な場合もあります。
だから私がこれまでに持っているものは次のとおりです:
class Checkin < ActiveRecord::Base
has_many :fields
class Field < ActiveRecord::Base
belongs_to :checkin
そして、私はするつもりでした
class DataFloat < ActiveRecord::Base
belongs_to :field
class DataString < ActiveRecord::Base
belongs_to :string
等
スキーマは、今のところ参照のみで単純です。DataFloat にはフロートがあり、DataString には文字列があります (ご想像のとおり)。
次に、( THISActiveRecord::Base.descendants
に従って)のようなものを使用して選択ボックスを作成し、チェックインに追加するときにフィールドを選択できるようにします。
そこにいるすべての MVC 専門家への私の質問は、これがこれを行うための最良の方法であるかどうかです。DataFloat と DataString によって拡張された中央オブジェクト「データ」を使用したほうがよいでしょうか? 私が思いもよらなかった3番目のより良い方法はありますか?