Rails Postgresで複数のキーに基づいてハッシュの配列を検索するにはどうすればよいですか?

daveasdf

入力して検索できる一連のヘイズが欲しいのですが。

add_column :drinkers, :habits, :text, array: true, default: []
drinker.habits << { year: DateTime.now.year, month: DateTime.now.month, drinker_id: drinker_id, napped_at_8am: true }

複数のdrinker.habitsキー値に基づいて酒飲みを検索するにはどうすればよいですか?

Drinker.select {|drinker| drinker[habits][:year] === 2020 && drinker[habits][:drinker_id] === 1 }

それは私の推測ですが、複数のKeyValue検索についてはどこにも見つかりません。

最大

これは実際には、悪いデータベースモデリングで自分の足を撃った典型的な例にすぎません。

Postgres配列は、整数や文字列などの単純なスカラー値の配列がある、本当に特殊なタスクに適したツールです。ハッシュを保存したい場合、それらは良い考えではありません。配列列内にRubyハッシュを押し込むと、クエリ不可能な混乱が発生します。

JSON / JSONBタイプは、オブジェクトの配列などのより複雑な構造を格納でき、データがスキーマの確認を試みない場合に有効な選択です。include演算子を使用してオブジェクトの配列をクエリできますが、次のようになります。

SELECT *
FROM "drinkers"
WHERE habits @> '[{"year": 2020}]'

データが構造化されている場合、ここでは実際には何の恩恵も受けていません。複雑さを増すと、クエリは恐ろしくなり、それらを高速化するインデックスもありません。

代わりに、リレーショナルデータベースは表形式であり、リレーショナルデータベースでデータをモデル化する方法は、ご想像のとおり、テーブルであるという事実に直面したいと考えています。

class Drinker < ApplicationRecord
  has_many :habits
end

class Habit < ApplicationRecord
  belongs_to :drinker
end

Drinker.joins(:habits)
       .where(habits: { year: 2020 })

TLDR; array、JSON / JSONB、およびhstoreは、本当に特殊なジョブに適したツールです。しかし、何に対してもあなたの最初の選択であってはなりません。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Rails Postgresで複数のキーに基づいてハッシュの配列を検索するにはどうすればよいですか?

分類Dev

Ruby / Rails:キーと値の文字列(配列値を含む)を有効なハッシュに変換するにはどうすればよいですか?

分類Dev

Ruby on Rails:値の配列に基づいて複数のAPIリクエストを作成しようとしています。これらの値をパラメーターとしてAPIURLに挿入するにはどうすればよいですか?

分類Dev

Railsの複数のページに配列検索結果を広げるにはどうすればよいですか?

分類Dev

Railsのハッシュの配列のすべての値を並べ替えるにはどうすればよいですか?モンゴ

分類Dev

ハッシュからキーを削除し、Ruby / Railsで残りのハッシュを取得するにはどうすればよいですか?

分類Dev

Railsでキーをハッシュに分割するにはどうすればよいですか?

分類Dev

Railsの複数のcheck_boxからハッシュ値を取得するにはどうすればよいですか?

分類Dev

Rails:特定のキーの値が同じ場合に2つのハッシュをマージするにはどうすればよいですか?

分類Dev

Railsのすべての検証をスキップするにはどうすればよいですか?

分類Dev

Railsの日付に基づいてリストを表示するにはどうすればよいですか?

分類Dev

Ruby on Railsモデルで配列とハッシュを組み合わせて利用するにはどうすればよいですか?

分類Dev

Ruby on Railsでハッシュを別のハッシュに動的に追加するにはどうすればよいですか?

分類Dev

変数を使用して、Ruby on Railsのpostgres配列に整数をクエリするにはどうすればよいですか?

分類Dev

変数を使用して、Ruby on Railsのpostgres配列に整数をクエリするにはどうすればよいですか?

分類Dev

Selectize.jsを使用してRailsのbelongs_toアソシエーションを検索または作成するにはどうすればよいですか?

分類Dev

Railsの複数の行を悲観的にロックするにはどうすればよいですか?

分類Dev

ユーザーの役割に基づいて、Rails Adminでモデルを認証するにはどうすればよいですか?

分類Dev

Railsのロケールに基づいてフォントを動的に設定するにはどうすればよいですか?

分類Dev

Ruby on Rails APIからこれらのハッシュ化された文字列を解析して、Javascriptのオブジェクトとしてアクセスできるようにするにはどうすればよいですか?

分類Dev

ユーザー定義型のRailsセッションハッシュ変数を取得して、リクエスト間でその型を維持するにはどうすればよいですか?

分類Dev

Railsフォームで整数の配列を送信するにはどうすればよいですか?

分類Dev

Railsスコープに複数の条件を追加するにはどうすればよいですか?

分類Dev

Heroku と Papertrailapp で Rails アプリの長いハッシュを削除するにはどうすればよいですか?

分類Dev

RailsでGETパラメータとPOSTパラメータだけをハッシュとして取得するにはどうすればよいですか?

分類Dev

Railsデータベース内の文字列の最初と2番目の部分を検索するにはどうすればよいですか?

分類Dev

Rails 5アプリのスキーマキャッシュを構成するにはどうすればよいですか?

分類Dev

Rails 4のActiveRecordクエリ内でハッシュ(attr_accessor)の計算値を取得するにはどうすればよいですか?

分類Dev

HerokuとCloudfrontでRailsのページキャッシュをアクティブ化するにはどうすればよいですか?

Related 関連記事

  1. 1

    Rails Postgresで複数のキーに基づいてハッシュの配列を検索するにはどうすればよいですか?

  2. 2

    Ruby / Rails:キーと値の文字列(配列値を含む)を有効なハッシュに変換するにはどうすればよいですか?

  3. 3

    Ruby on Rails:値の配列に基づいて複数のAPIリクエストを作成しようとしています。これらの値をパラメーターとしてAPIURLに挿入するにはどうすればよいですか?

  4. 4

    Railsの複数のページに配列検索結果を広げるにはどうすればよいですか?

  5. 5

    Railsのハッシュの配列のすべての値を並べ替えるにはどうすればよいですか?モンゴ

  6. 6

    ハッシュからキーを削除し、Ruby / Railsで残りのハッシュを取得するにはどうすればよいですか?

  7. 7

    Railsでキーをハッシュに分割するにはどうすればよいですか?

  8. 8

    Railsの複数のcheck_boxからハッシュ値を取得するにはどうすればよいですか?

  9. 9

    Rails:特定のキーの値が同じ場合に2つのハッシュをマージするにはどうすればよいですか?

  10. 10

    Railsのすべての検証をスキップするにはどうすればよいですか?

  11. 11

    Railsの日付に基づいてリストを表示するにはどうすればよいですか?

  12. 12

    Ruby on Railsモデルで配列とハッシュを組み合わせて利用するにはどうすればよいですか?

  13. 13

    Ruby on Railsでハッシュを別のハッシュに動的に追加するにはどうすればよいですか?

  14. 14

    変数を使用して、Ruby on Railsのpostgres配列に整数をクエリするにはどうすればよいですか?

  15. 15

    変数を使用して、Ruby on Railsのpostgres配列に整数をクエリするにはどうすればよいですか?

  16. 16

    Selectize.jsを使用してRailsのbelongs_toアソシエーションを検索または作成するにはどうすればよいですか?

  17. 17

    Railsの複数の行を悲観的にロックするにはどうすればよいですか?

  18. 18

    ユーザーの役割に基づいて、Rails Adminでモデルを認証するにはどうすればよいですか?

  19. 19

    Railsのロケールに基づいてフォントを動的に設定するにはどうすればよいですか?

  20. 20

    Ruby on Rails APIからこれらのハッシュ化された文字列を解析して、Javascriptのオブジェクトとしてアクセスできるようにするにはどうすればよいですか?

  21. 21

    ユーザー定義型のRailsセッションハッシュ変数を取得して、リクエスト間でその型を維持するにはどうすればよいですか?

  22. 22

    Railsフォームで整数の配列を送信するにはどうすればよいですか?

  23. 23

    Railsスコープに複数の条件を追加するにはどうすればよいですか?

  24. 24

    Heroku と Papertrailapp で Rails アプリの長いハッシュを削除するにはどうすればよいですか?

  25. 25

    RailsでGETパラメータとPOSTパラメータだけをハッシュとして取得するにはどうすればよいですか?

  26. 26

    Railsデータベース内の文字列の最初と2番目の部分を検索するにはどうすればよいですか?

  27. 27

    Rails 5アプリのスキーマキャッシュを構成するにはどうすればよいですか?

  28. 28

    Rails 4のActiveRecordクエリ内でハッシュ(attr_accessor)の計算値を取得するにはどうすればよいですか?

  29. 29

    HerokuとCloudfrontでRailsのページキャッシュをアクティブ化するにはどうすればよいですか?

ホットタグ

アーカイブ