###前提・実現したいこと
アプリからAPIを叩いてもらって、位置情報とともに現在どんな作業をしているか、を管理するシステムを作っています。
例えば位置情報を管理するTrackingというモデルと、現在どんな作業をしているかを持っている StatusCategoryがある場合、想定として下記のようにしたいと思っています。
現在位置: StatusCategory(移動手段)
1 緯度経度: 徒歩で移動中
2 緯度経度: 食事中
3 移動経度: ジムで運動中
###どのようにモデルを設計すべきか
そこで、どのようにモデルを設計すべきか、迷っています。
###案1:中間テーブルをもたせて管理する。
# id :integer not null, primary key # user_id :integer not null # latitude :float not null # longitude :float not null # address :string Tracking(位置情報) has_many status_relations has_many status_categories, through: :status_relations
# id :integer not null, primary key # name :string not null # created_at :datetime not null # updated_at :datetime not null StatusCategory has_many status_relations has_many trackings, through: :status_relations
# id :integer not null, primary key # tracking_id :integer not null # status_category_id :integer not null # created_at :datetime not null # updated_at :datetime not null StatusRelation belongs_to :status_category belongs_to :tracking
とする。
案2:has_oneにする。
Tracking has_one :status_category StatusCategory belongs_to :tracking
本来、Trackingは、一度に一つのStatusCategoryしか持てないのでhas_oneでも良いのかな、と思う反面
has_oneにすると、例えば、勉強中とか睡眠中などのステータスを増やしたい時に拡張しづらいのかな、と思ったりしています。
どのようにすることが、設計的に良いのでしょうか。もし可能であればそれぞれのメリットデメリットも合わせて教えて頂けますと助かります。
よろしくお願いします。
###補足情報(言語/FW/ツール等のバージョンなど)
Rails5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/16 03:15