問題タブ [user-generated-content]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
128 参照

ruby-on-rails - ユーザー生成コンテンツの「編集者承認済み」バージョンの Active Record スコープの構築

ユーザーがコンテンツ (投稿) を公開できる StackOverflow に似たサイトを運営しています。また、編集者が選んだ注目の投稿を紹介するフロントページもあります。

ユーザーがいつでも投稿を編集できるようにしたいのですが、編集者による最初のレビューなしではフロントページに何も表示されないようにしたいと考えています。

これを解決するために、Post を特集するたびにpaper_trail現在のバージョンを保存するようなバージョン管理システムを実装できると考えました。version_idこのようにして、編集者がレビューしたコンテンツをフロントページに簡単に取得しながら、ユーザーのプロフィールなど、サイトの重要度の低い部分に最新バージョンを表示することができます。当社の編集者は定期的に変更を確認し、承認することができます。

共有インターフェイスと最小限の重複コードを維持しながら、一部のコントローラーでレビュー済みのバージョンを選択し、他のコントローラーで最新バージョンを選択できる最もクリーンなアプローチは何だろうと思っています。


理想的なソリューションにはスコープが含まれているため、レビュー済みのバージョンをreviewed簡単に取得して取得し、最新バージョンを取得できます。Post.reviewedPost.all

ただし、レビュー済みのバージョンを取得するには、オブジェクト PaperTrail ストア ( version.reify) を逆シリアル化する必要があり、スコープ内では不可能と思われるため、これについてどうすればよいかわかりません。

代わりに、次のようにクラス メソッドを使用できます。

def self.reviewed all.map do |post| Version.find(post.version_id).reify end.compact! || Post.none end

ただし、これは実際のスコープではないため、チェーン化できないなど、理想的とは言えません。

または、次のような Post インスタンス メソッドを使用することもできます。

def reviewed_version Version.find(version_id).reify end

これは理論的には機能しますが、これは、ビュー全体でこのメソッドを呼び出す必要があることを意味しますが、正しいデータをフェッチするのはコントローラーの責任です。render collection: @postsフロントページとユーザー プロファイルの両方に を持っているとしましょ_post.html.erbreviewed_version


私は PaperTrail に縛られているわけではありませんが、複製する必要のない優れた点がたくさんあります。ただし、PaperTrail が柔軟性に欠けると判明した場合は、他の方向性を検討することもできます。

FWIW、私は Draftsman も見ました、「ドラフト」は例外と見なされます (つまり、ほとんどの場合、ドラフトは表示されません)。一方、私の場合は、ほとんどのページで最新バージョンを表示したいのですが、フロントページのような特定のいくつかを除いて.

0 投票する
0 に答える
12 参照

file - ファイルタイプが変更されたかどうかをC#で確認する

ユーザーが曲をアップロードできるリズムスマッシャーというリズムゲームに取り組んでいます。
問題は、マルウェアなどをアップロードすることです。2 つのうちのどちらかが起こったかどうかを知りたいです。
アップロードしているファイルの種類が変更された (以前は .txt、.mp4、現在は .mp3)、またはアルゴリズム (など) が別のファイル形式である必要があることが検出されました
どんな助けでも大歓迎です、ありがとう!

0 投票する
1 に答える
35 参照

security - ネオシティのようなサイトビルダーは、クロスサイトスクリプティングとサニタイズをどのように処理しますか?

Neocities エディターでは、脆弱なテキストを入力できるようで、これはブラウザーで実行されます (下の画像にあるオンロード アラートのように)。ユーザーが生成したページをサニタイズし、脆弱性に対処するために Neocities が取るセキュリティはありますか?

ネオシティ編集者