本当に持っていない限り、URLを保存しないでください。重要なのは、URLを保存するときに、サムネイルや複数のスタイルの画像を作成するためにURLを処理することはできないということです。また、ページに画像を表示する場合は、外部からの呼び出しを行う必要があります。これにより、ページの速度が低下したり、さらに悪化したりする可能性があります。将来、リンクが切断された場合、ユーザーには空の画像が表示されます。
これは、YouTubeビデオにも当てはまります。ただし、ビデオでは通常、ビデオだけでなく、より多くの情報を保存および表示する必要があります。2つのテーブルを作成できます。1つはビデオ用、もう1つは画像用です。ビデオテーブルには、タイトル、説明、作成者、期間、埋め込みコード、サムネイル(画像の添付ファイル)があります。
URLが指定されたら、任意の画像をダウンロードして、通常のファイルのように保存できます。キャリアウェーブの使用-
@object.remote_image_url = "http://www.foo.com/file.png"
@object.save
ビューでは、おそらく並べて両方のオプションがあり、それらを異なるアクションに投稿させることができます。したがって、ファイルが選択されて投稿された場合は、通常どおりに保存します。URLが入力されている場合は、それがビデオサイトであるかどうかを確認できます。ビデオの場合は、video_info gemを使用して情報を解析し、保存します。それ以外の場合は、上記の2行を使用して、URL画像を保存します。
ノート
私の答えは、ユーザー入力の品質/性質については説明していません。私の意見では、誰かが間違ったURLを入力する可能性が高いので、URLを画像として保存する試みを、begin-rescueブロックにラップし、おそらくJSを使用して、ビデオドメインをいくつかのWebサイトに制限します。解析できるようになります。