問題タブ [named-scope]

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

ruby - この可能性のためのルビーワンライナー?

2行目と3行目を1つのライナーに組み合わせて、1つの貴重なものを節約できる可能性はありますか?

モデル内の上記の関数はConfig、キーによってデータベースレコードをフェッチしようとします。データベースに見つからない場合は、デフォルトを返します。

名前付きスコープで記述できればさらに良いです。ありがとう

0 投票する
2 に答える
68 参照

ruby-on-rails - 名前付きスコープ NOT IN、方法は?

名前付きスコープ構文で NOT IN を記述するにはどうすればよいですか? たとえば、User :has_many Photos の場合、次のように定義できます。

Photoモデルに含まれていないすべてのユーザーを返しますか? ありがとう!

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

ruby-on-rails - 名前付きスコープの連鎖が意図したとおりに機能しない

そのように定義された2つの単純な名前付きスコープがあります:

Numbers.even を呼び出すと、正しい 2,4,6 が返されます Numbers.odd を呼び出すと、正しい 1,3,5 が返されます

Numbers.even.odd のようにチェーンすると、1,3,5 が返されます。これが参照する最後のスコープだからです。Numbers.odd.even と言うと、実際には 2,4,6 になります。

それらをチェーンすると、1、2、3、4、5、6になると予想されます。私が試したもう1つのアプローチは次のとおりです。

しかし、作成するクエリは次のようになるため、それらを連鎖させても結果は得られません。

「AND」句を OR に変更する必要がありますが、それを強制する方法がわかりません。これは ActiveRecord の問題でしょうか??

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

ruby-on-rails - 検索ロジックと :has_many、:through =>

データベース内の多くのフィールドを検索するために Searchlogic を使用しています。それらのフィールドの 1 つは :has_may, :through => の関係であり、私はそれを機能させることができません。

モデルの関連部分は次のとおりです。

ソース.rb:

Authorship.rb:

著者.rb:

次に、私の見解では、次のようになります。

検索ページは正常にロードされますが、「送信」ボタンを押すと次のエラーが表示されます。

SourcesController のコードは次のとおりです。

クラス SourcesController < ApplicationController

パラメータは次のとおりです。

パラメータ: {"commit"=>"Search", "search"=>{"hash"=>{"text_name_like"=>"canterbury", "date_begin_greater_than_or_equal"=>"", "author"=>{"name_like" =>""}, "editor_like"=>"", "link_not_blank"=>"0", "trans_none_not_null"=>"0", "trans_other_not_null"=>"0", "trans_english_not_null"=>"0", "trans_french_not_null"=>"0", "region_like"=>"", "live_not_null"=>"", "app_facsimile_not_null"=>"0", "date_end_less_than_or_equal"=>""}, "order"=>"" }}

ここで何が起こっているかについて何か考えがある人はいますか? エラー メッセージをさらに表示する必要がありますか?

どうもありがとう!

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

ruby-on-rails - 積極的な読み込みに関するrailsnamed_scopeの問題

2つのモデル(レール2.3.8):

ユーザー; ユーザー名と無効なプロパティ; ユーザーhas_one:profileプロファイル; フルネームと非表示のプロパティ

disable=1およびhidden=1のユーザープロファイルを削除するnamed_scopeを作成しようとしています。さらに、ユーザーモデルは通常プロファイルモデルと組み合わせて使用​​されますが、:include =>:profile構文を使用してこれを指定できる柔軟性が必要です。

次のユーザーnamed_scopeがあります。

これは、ユーザーモデルを参照するだけで期待どおりに機能します。

ただし、プロファイルモデルを含めようとすると、次のようになります。

次のようなエラーが発生します。

この方法でモデルコレクションの境界を越えることはできますか?

0 投票する
2 に答える
1292 参照

ruby-on-rails - 複数のテーブルにまたがるRails named_scope

Rails 2.3.x で named_scopes を使用してコードを整理しようとしていますが、 has_many :through 関連付けに苦労しています。スコープを間違った場所に置いているのではないかと思っています...

以下にいくつかの擬似コードを示します。問題は、:accepted という名前のスコープが 2 回複製されることです...もちろん、:accepted を別のものと呼ぶこともできますが、これらはテーブル上のステータスであり、別のものと呼ぶのは間違っているようです。私が次のことを正しく行っているかどうかを誰かが明らかにすることはできますか?

Rails 3 が出ていることは知っていますが、まだベータ版であり、私が行っている大きなプロジェクトであるため、まだ本番環境で使用することはできません。

person.contacts.accepted と group.members.accepted のようなものを実行しようとしていますが、これらは 2 つの異なるものです。named_scopes を Membership クラスと Connection クラスに含めるべきではありませんか?

ただし、名前付きスコープをメンバーシップ クラスと接続クラスに配置しようとすると、このエラーが発生します (Person.find(2).contacts は、「受け入れられた」メソッドを持たない人の配列を返すためです。

1つの解決策は、Personクラスで2つの異なる名前付きスコープを呼び出すか、別の関連付け(つまり、has_many :accepted_membersとhas_many :accepted_contacts)を作成することですが、それはハックのようで、実際には受け入れただけではありません(つまり. 禁止されたメンバー、無視された接続、保留中、リクエストなど)

0 投票する
2 に答える
2208 参照

ruby-on-rails - rails named_scope は熱心な読み込みを無視します

2 つのモデル (Rails 2.3.8):

  • ユーザー; ユーザー名と無効なプロパティ; ユーザー has_one :プロファイル
  • プロフィール; full_name と隠しプロパティ

disabled=1 および hidden=1 のユーザー プロファイルを排除する named_scope を作成しようとしています。User モデルは通常、Profile モデルと組み合わせて使用​​されるため、Profile モデル (:include => :profile) をeager-loadしようとします。

User モデルに「visible」という名前の named_scope を作成しました。

クエリで named_scope を使用すると、eager-loading 命令が無視されることに気付きました。

バリエーション 1 - ユーザー モデルのみ:

バリエーション 2 - ビューでプロファイル モデルを使用します。遅延ロード プロファイル モデル

バリエーション 3 - 熱心なロード プロファイル モデル

バリエーション 4 - 熱心な読み込み命令を含む name_scope を使用する

バリエーション 4 は正しい数のレコードを返しますが、eager-loading 命令を無視しているようにも見えます。

これはクロスモデルの名前付きスコープの問題ですか? おそらく私はそれを正しく使用していません。

この種の状況は、Rails 3 でより適切に処理されますか?

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

ruby-on-rails - MySQL から PostreSQL および名前付きスコープ

正常に動作するモデルの 1 つに名前付きスコープがあります。コードは次のとおりです。

これは、MySQL データベースを使用するアプリのローカル コピーでは正常に機能しますが、アプリを Heroku (PostgreSQL のみを使用) にプッシュすると、次のエラーが発生します。

ActiveRecord::StatementInvalid (PGError: ERROR: column "msg_threads.subject" must appear in the GROUP BY clause or be used in an aggregate function:

SELECT "msg_threads"."id" AS t0_r0, "msg_threads"."subject" AS t0_r1, "msg_threads"."originator_id" AS t0_r2, "msg_thr eads"."created_at" AS t0_r3, "msg_threads"."updated_at" AS t0_r4, "msg_threads"."url_key" AS t0_r5, "deletion_flags"."id" AS t1_r0, "deletion_flags"."user_id" AS t1_r1, "deletion_flags"."msg_thread_id" AS t1_r2, "deletion_flags"."confirmed" AS t1_r3, "deletion_flags"."created_at" AS t1_r4, "deletion_flags"."updated_at" AS t1_r5, "recipiences"."id" AS t2_r0, "recipiences"."user_id" AS t2_r1, "recipiences"."msg_thread_id" AS t2_r2, "recipiences"."created_at" AS t2_r3, "recipien ces"."updated_at" AS t2_r4 FROM "msg_threads" LEFT OUTER JOIN "deletion_flags" ON deletion_flags.msg_thread_id = msg_threads.id LEFT OUTER JOIN "recipiences" ON recipiences.msg_thread_id = msg_threads.id WHERE (recipiences.user_id = 1 AND deletion_flags.user_id IS NULL) GROUP BY msg_threads.id)

私は Postgres の動作にあまり詳しくないので、これを機能させるためにここに何を追加する必要がありますか? ありがとう!

0 投票する
2 に答える
287 参照

ruby-on-rails - named_scopeを使用してモデルのレコードをフィルタリングするにはどうすればよいですか

「description」フィールドを持つモデル「Product」があります。ここで、インデックスページにリンクを作成します。このリンクをクリックすると、説明が空白(空)のすべての製品が表示されます。

モデルでは、このようなnamed_scopeを定義しました

コンソールでProduct.no_description.countを呼び出して、named_scopeが機能することを確認しました。

私の知る限り、コントローラーは「インデックス」アクションのリンクからのフィルター要求を処理することになっていますが、すべての製品を表示するデフォルトとは区別できます。

私の問題は、コントローラーに別の要求、ビュー上のリンクのセットアップルート、およびビュー上の実際のリンクを処理させることです。私が自分の問題を説明したことを願っています。

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

mysql - Rails: MySQL の "in" をトリガーする named_scope の使用

問題:

次のようなトリガーとなるクエリを実行したい

を使用してnamed_scope


私が試したこと:

これは単一のコード用です:

私は次のようなものを試しました

そして送った

余分 select * from users where code in '(1,2,4)'な引用符が原因で MySQL エラーが発生します。

PS: 理想的には送信したい user.of_codes([1,2,4])