Railsコンソールは配列の最初のレコードのみを出力しますか?

jckly

Railsコンソールでいくつかの関係をテストしているデータで遊んでいますが、配列の最初のレコードのみを出力しているようです。

プロジェクトのクラスのcインスタンスであるという変数がありますComparison

c.productsを呼び出すことができるように関係を設定すると、その比較ですべての製品の配列(この場合は2)が返されます。

問題は私が電話するときです:

c.products 2つのうち最初の製品のみを返します。

c.products[1] nilを返します。

y c.products 同じデータのより詳細なバージョンは、両方の製品を示しています。

c.products.count 2を返します。

Railscでは次のようになります。

c.products
=> [#<Product id: 1, category_id: 3, name: "Camera", description: "erererer", brand: "Canon", quantity: 3, star_rating: 4, price: 299.0, created_at: "2014-06-18 20:26:34", updated_at: "2014-06-19 06:40:34">]

c.products.count
   (0.5ms)  SELECT COUNT(*) FROM "products" INNER JOIN "compared_products" ON "products"."id" = "compared_products"."product_id" WHERE "compared_products"."comparison_id" = $1  [["comparison_id", 2]]
=> 2

y c.productsはそれを凝縮して、多くのデータを返すため、最後の製品までしか表示しません。

y c.products
--- &10 !ruby/object:ActiveRecord::Associations::CollectionProxy
association: !ruby/object:ActiveRecord::Associations::HasManyThroughAssociation
  reflection: &1 !ruby/object:ActiveRecord::Reflection::ThroughReflection
    macro: :has_many
    name: :products
    scope: 
    options:
      :through: :compared_products
    active_record: &2 !ruby/class 'Comparison'
    klass: &3 !ruby/class 'Product'
    plural_name: products
    collection: true
    automatic_inverse_of: false
    type: 
    foreign_type: products_type
    constructable: true
    source_reflection_name: :product
    class_name: Product
    chain:
    - *1
    - !ruby/object:ActiveRecord::Reflection::AssociationReflection
      macro: :has_many
      name: :compared_products
      scope: 
      options: {}
      active_record: *2
      klass: !ruby/class 'ComparedProduct'
      plural_name: compared_products
      collection: true
      automatic_inverse_of: 
      type: 
      foreign_type: compared_products_type
      constructable: true
      class_name: ComparedProduct
      foreign_key: comparison_id
      active_record_primary_key: id
    scope_chain:
    - []
    - []
  owner: !ruby/object:Comparison
    attributes:
      id: 2
      user_id: 1
      name: Jacks Electronics Comparison
      created_at: 2014-06-20 16:12:36.828154000 Z
      updated_at: 2014-06-20 16:12:36.828154000 Z
  loaded: true
  target:
  - !ruby/object:Product
    attributes:
      id: 1
      category_id: 3
      name: Camera
      description: erererer
      brand: Canon
      quantity: 3
      star_rating: 4
      price: 299.0
      created_at: 2014-06-18 20:26:34.276570000 Z
      updated_at: 2014-06-19 06:40:34.776216000 Z
Rustam A. Gasanov

ご覧のとおりc.products、SQLクエリはトリガーされませんでした。つまり、キャッシュされています。c.products.count一方、クエリをトリガーし、データベースから実際の情報を通知します。したがって、c.products他の関連付けを介して、またはデータベースで直接手動で変更された可能性があります。実際の製品を受け取るにはc.products.reload、(SQLトリガーなしで)キャッシュされた製品をカウントします。c.products.size

詳細な説明はこちらhttps://stackoverflow.com/a/18997294をご覧ください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

私のコードは配列の最後の値のみを出力します

分類Dev

Laravel DB insert([])は、配列の最初のレコードのみを挿入します

分類Dev

pysparkのStructuredStreamingで、Kafkaから読み取り、レコードをコンソールに出力する方法は?

分類Dev

SQLSUMは最初のレコードのみを返します

分類Dev

foreachループはMySQLテーブルから1つのレコードのみを出力します

分類Dev

ターミナルの `ps`コマンドのコマンドの下の列のみを出力します

分類Dev

ターミナルの `ps`コマンドのコマンドの下の列のみを出力します

分類Dev

JavaScript配列「Forループ」は最初の反復のみを出力します

分類Dev

オブジェクトの配列をコンソールに出力します

分類Dev

私のコードはいくつかの「配列」を出力します

分類Dev

コレクションからランダムなカーソルを取得しようとしています-エラー:公開関数はカーソルまたはカーソルの配列のみを返すことができます

分類Dev

Railsはレコードと最新のアソシエーションレコードをインクルードで効率的にクエリしますか?

分類Dev

Powershell:配列のコンソール出力の最初の空の空白行を削除するにはどうすればよいですか?

分類Dev

RailsコンソールのSQLクエリはtrueのみを返します

分類Dev

フラスコ内のモーダルは最初のレコードのみを表示します

分類Dev

フラスコ内のモーダルは最初のレコードのみを表示します

分類Dev

Railsは関連するレコードを使用して配列の結果をグループ化します

分類Dev

Rails:ActionCableは最初のレコードのみをデータベースに保存します

分類Dev

RailsコンソールはIDの配列でユーザーを検索します

分類Dev

CakePHP hasOneアソシエーションは、存在しないレコードの空のフィールドの配列を返します

分類Dev

スキャナーはコンソールから入力の配列を読み取ります

分類Dev

コマンドのコンソール出力の最初の行に移動します

分類Dev

このPHP配列から最初のレコードのみが返されるのはなぜですか?

分類Dev

Foreachは最初のレコードのみを返し、停止します

分類Dev

Foreachは最初のレコードのみを返し、停止します

分類Dev

mongodbコレクションの埋め込み配列オブジェクトから特定のフィールドのみを取得します

分類Dev

Rails:コンソールからのパスヘルパーの出力を確認します

分類Dev

Herokuアプリは、送信した応答を出力せず、コンソールログのみを出力します

分類Dev

SQLiteクエリは最初のレコードのみを返します

Related 関連記事

  1. 1

    私のコードは配列の最後の値のみを出力します

  2. 2

    Laravel DB insert([])は、配列の最初のレコードのみを挿入します

  3. 3

    pysparkのStructuredStreamingで、Kafkaから読み取り、レコードをコンソールに出力する方法は?

  4. 4

    SQLSUMは最初のレコードのみを返します

  5. 5

    foreachループはMySQLテーブルから1つのレコードのみを出力します

  6. 6

    ターミナルの `ps`コマンドのコマンドの下の列のみを出力します

  7. 7

    ターミナルの `ps`コマンドのコマンドの下の列のみを出力します

  8. 8

    JavaScript配列「Forループ」は最初の反復のみを出力します

  9. 9

    オブジェクトの配列をコンソールに出力します

  10. 10

    私のコードはいくつかの「配列」を出力します

  11. 11

    コレクションからランダムなカーソルを取得しようとしています-エラー:公開関数はカーソルまたはカーソルの配列のみを返すことができます

  12. 12

    Railsはレコードと最新のアソシエーションレコードをインクルードで効率的にクエリしますか?

  13. 13

    Powershell:配列のコンソール出力の最初の空の空白行を削除するにはどうすればよいですか?

  14. 14

    RailsコンソールのSQLクエリはtrueのみを返します

  15. 15

    フラスコ内のモーダルは最初のレコードのみを表示します

  16. 16

    フラスコ内のモーダルは最初のレコードのみを表示します

  17. 17

    Railsは関連するレコードを使用して配列の結果をグループ化します

  18. 18

    Rails:ActionCableは最初のレコードのみをデータベースに保存します

  19. 19

    RailsコンソールはIDの配列でユーザーを検索します

  20. 20

    CakePHP hasOneアソシエーションは、存在しないレコードの空のフィールドの配列を返します

  21. 21

    スキャナーはコンソールから入力の配列を読み取ります

  22. 22

    コマンドのコンソール出力の最初の行に移動します

  23. 23

    このPHP配列から最初のレコードのみが返されるのはなぜですか?

  24. 24

    Foreachは最初のレコードのみを返し、停止します

  25. 25

    Foreachは最初のレコードのみを返し、停止します

  26. 26

    mongodbコレクションの埋め込み配列オブジェクトから特定のフィールドのみを取得します

  27. 27

    Rails:コンソールからのパスヘルパーの出力を確認します

  28. 28

    Herokuアプリは、送信した応答を出力せず、コンソールログのみを出力します

  29. 29

    SQLiteクエリは最初のレコードのみを返します

ホットタグ

アーカイブ