0

私は、ユーザーが特定の種類の写真を共有するレールアプリを持っています。現在、写真を有効にするにはいくつかの方法で写真を分類する必要があるため、写真を一度に1枚ずつアップロードし、分類してデータベースに保存する必要があります。Rails:プログレッシブ検証、STIなどを使用しますか?

分類に時間がかかりますので、ユーザーは写真のバッチをアップロードしてから、時間が来たら戻って分類することができますが、写真が完全に分類されずに保存されると、 「完全な」写真で。

これは一度にたくさんの写真を一度にアップロードしてから自分の個人的な待ち行列に進み、時間を割いて各写真を分類して分類する「ウィザード」システムのように理想的です。

私の質問は次のとおりです。このような問題にどのようにアプローチしますか?

私は、単一テーブル継承を使用して、Photo:IncompletePhotoCompletePhotoの2つのサブクラスを作成することを考えていました。 IncompletePhotoには画像ファイルのみが必要ですが、CompletePhotoには分類が必要です。ユーザーは自分のIncompletePhotosを見ることができましたが、アプリ内の検索結果はCompletePhotosだけを返します。

私は解決しようとしている問題の正しいアプローチのように聞こえるのですか、それとも良い方法がありますか?私は以前はSTIを使ったことがなかったし、それが良いアイデアかどうかは分からない。

答えて

0

私はあなたが、データベースとモデルの両方にDRYの恩恵を受けるだろう例について異なるいくつかのオブジェクトではなく、すべての共通の性質を持っている時にSTIが有用であることが作成されたことを言うと思います。そのようなモデルのインスタンスのタイプを正しく変更する方法があるかどうかはわかりません。さて、type列自体を変更することはできますが、オブジェクトのRubyクラスは同じであり、保存後にモデルを再フェッチしてから検証を手動で実行する場合を除き、検証となります。後者は私のための汚れたハックのように聞こえる。

正しい方法として、complete列を追加し、validates ..., :if => :completeの形式のバリデータを使用することをお勧めします。

+0

ありがとう、これは意味があり、私が行くことに決めた方向です。 – Andrew

関連する問題