28191


Ruby on Rails にてWebアプリを作成しております。初学者のため回答に必要な前提条件等が抜けておればご指摘頂けますと幸いです。

ユーザーが指定する条件に基づいてデータベースのテーブルを検索するクエリを作成しているのですが、以下の条件で最も簡潔な書き方をご教示いただけないでしょうか？？

①Postgresqlデータベースの中に配列（ex. ["a", "b",
"c"]）が格納されている列があり、この列データと②の検索条件を照合してデータを検索する

②ユーザーが指定した条件（チェックボックスを使用）は配列で取得している状況 ex. ["a", "c"]

①②の配列に格納されるデータ数は必ずしも一致しないが、共に7つという上限あり。

クエリ抽出条件としては、②の配列に含まれる文字のどれか１つでも①の配列に含まれていれば、データを抽出する。

現状、モデル内に以下のようなscopeを記述し、データの抽出を行おうとしています。

[code]

    scope :search_by_preference, ->(num) { where("? = ANY(preference_num)", num)}
    
[/code]

しかしながら、こちらのプレイスホルダーでは、配列を引数として渡すことができません。  
なお、引数が１つ（ユーザーの選択した条件が１つ）のときは問題なくクエリは機能しております。

以上、何卒よろしくお願いします


CC BY-SA 3.0
2016-07-26T07:43:56.823
27854
2016-08-11T06:15:59.593
2016-07-27T09:31:41.747
978
978
question
ruby-on-rails postgresql
配列を引数としたPostgresql配列データ検索方法について


上述のコメントにもありますが、postgresqlのデータ型がcharacter
varying[]であるため、引数を明示的に可変長文字列に指定することで解決しました。

[code]

    where("preference_num && ARRAY[?]::varchar[]", num) 
    
[/code]


CC BY-SA 3.0
2016-08-11T06:15:59.593
28191
2016-08-11T06:15:59.593
978
27854
answer