問題タブ [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.
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 と入力すると、ドラフトが出力に含まれるため、また、定義したスコープでビューを機能させる方法がわからないため)モデルとコントローラーで。
ルートをかき集めると、次のようになります。
マージ機能には、プロジェクトからスコープを経てファイナライズ/開示に至るまでに何かを追加する必要があると思います。
ruby-on-rails - Rails でスコープのエイリアスを作成できますか?
このスコープがあるとします:
同等のスコープが必要です
あるスコープを別のスコープにエイリアスする方法はありますか? たとえば、次のようなもの
PSこれは不自然で非現実的な例であることは知っていますが、それが可能かどうか知りたいだけです!
ありがとう!
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 つの必須タイプを持つすべての製品をフェッチし、必要な数のタイプを持つ製品のみをグループ化します。したがって、すべてのタイプに属する製品のみを同時に入手できます。
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 は空ではないため、より低い位置の投稿よりも優先されます。