問題タブ [named-scopes]

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 投票する
0 に答える
306 参照

ruby-on-rails - Rails - ルートとスコープ

Rails4でアプリを作ろうとしています。

この質問には、プロジェクト、スコープ、開示、ファイナライズの 4 つの関連モデルがあります。

関連付けは次のとおりです。

Project.rb:

私の project.rb モデルでは、スコープを次のように定義しようとしました。

Scope.rb

ディスクロージャー.rb:

Finalise.rb:

私のプロジェクトコントローラーには、次のように定義されたアクションがあります。

私の目的は、そのアクションが、ファイナライズ済みおよび公開済みとしてマークされているプロジェクトのみを表示することです (これらのスコープは、ファイナライズおよび開示モデルで定義されているためです。

私のdisclosure.rbには

公開テーブルに :allures という属性があります

私の finalise.rb には、次のものがあります。

ファイナライズ テーブルに :draft という属性があります。

私のプロジェクトのインデックス ビューには、次のものがあります。

私のroutes.rbには、次のものがあります。

私が知らない部分は、どのようにビューを作成し、project#all アクションを取得するのですか?

URL に projects#all と入力しようとすると、ドラフトとしてマークされたプロジェクトが表示されます (そのため、finalise.rb で定義したスコープを満たしていません)。project.rbでマージしようとしたスコープで基準を適切に取得していないかどうかはわかりません。いずれにせよ、インデックスビューをこれで動作させる方法がわかりませんコントローラーアクション。

私は立ち往生しています。私が明確に書いたものは機能しません-(ブラウザーに project#all と入力すると、ドラフトが出力に含まれるため、また、定義したスコープでビューを機能させる方法がわからないため)モデルとコントローラーで。

ルートをかき集めると、次のようになります。

マージ機能には、プロジェクトからスコープを経てファイナライズ/開示に至るまでに何かを追加する必要があると思います。

0 投票する
3 に答える
4938 参照

ruby-on-rails - Rails でスコープのエイリアスを作成できますか?

このスコープがあるとします:

同等のスコープが必要です

あるスコープを別のスコープにエイリアスする方法はありますか? たとえば、次のようなもの

PSこれは不自然で非現実的な例であることは知っていますが、それが可能かどうか知りたいだけです!

ありがとう!

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

ruby-on-rails - RubyOnRails の複数スコープ構成

has_many Types テーブルといくつかのスコープを持つ Product モデルを取得しました。

1 つのスコープ (たとえば Product.type1) を使用しようとするとすべてうまくいきますが、一度に 2 つのスコープ (Product.type1.type2) を使用すると空のクエリが返されます。はい、1 つの製品に複数のタイプがある場合があります。

最終的な目標は、チェックボックス フォームを使用してタイプ別に製品のフィルターを作成することです。type1 と type2 をチェックするとき、Type1 と Type1 を持つすべての製品を同時に表示したいと考えています。

更新 1

そのため、@ aaron.vが提案したように、いくつかのクエリを実行してから & それらを実行しようとしました。関数内でロジックを実行したかったので、次のようにします。

私のポイントは、各タイプを反復処理し、すべての製品を収集してから、それらを関数内に配置することでした。問題は、反復しているときに、各ループがハッシュの配列ではなく文字列を返すことです。

私は何を間違っていますか?

解決策 1

@aaron.v による提案、以下で説明

解決策 2

redditで見つけました。この関数では、少なくとも 1 つの必須タイプを持つすべての製品をフェッチし、必要な数のタイプを持つ製品のみをグループ化します。したがって、すべてのタイプに属する製品のみを同時に入手できます。

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

ruby-on-rails-4 - 結果をスコープ別に一覧表示する where (field) not nil THEN second condition

次の条件を取得するために1つのクエリを作成する方法があるかどうか疑問に思っています:

1)scope :scheduled_for, -> {where.not(:scheduled_for => nil)}

それから

2)scope :sort_by_position, -> {order('position')}

期待される結果は、次のリストになります。

  • ポスト 1 (9 月 23 日 && ポジション 1)
  • ポスト 2 (9 月 24 日 && ポジション 2)
  • ポスト 3 (ポジション: 3)
  • ポスト 4 (ポジション: 4)
  • 等...

注: 位置フィールドはランダムである可能性があります (つまり、投稿 1 の位置は 5 ですが、その Scheduled_for は空ではないため、より低い位置の投稿よりも優先されます。