私は配列にシリアル化した「日」属性を含む Meetings クラスを持っています。配列を格納するために使用した方法は、次のとおりです。
たとえば、次のように実行します。
Meeting.first.days
返される可能性があります:
["Monday", "Tuesday", "Wednesday"]
以下は、Meeting オブジェクト全体の例です。
#<Meeting id: 7, address: "10 Canal Street", neighborhood: "Tribeca", building_name: "Yale Club", name: "Alumni Luncheon", start_time: "00:00", end_time: "00:35", notes: "", days: ["Tuesday", "Wednesday", "Thursday"], zip_code: 10055, special_interest: nil, meeting_type: nil, area: "Manhattan", latitude: 40.8104529, longitude: -73.9922805, created_at: "2013-09-29 22:02:29", updated_at: "2013-09-29 22:02:29">
曜日に対応するチェックボックスを備えた検索フォームがあるため、ユーザーは会議を検索する曜日を確認できます。たとえば、月曜日が含まれる会議を表示したい場合があります。
私の期待は、「日」配列に「月曜日」が含まれる会議オブジェクトが検索で返されることです。しかし、ActiveRecord を使用してこれらの会議をフィルター処理するのに問題があります。これまでのところ、私は持っています:
meetings = Meeting.order(:start_time)
meetings = meetings.where("days in (?)", days_params)
しかし、これは 'meetings' 変数を結果 0 までフィルタリングし続けます。私は間違っている可能性がありますが、問題は「日」が配列でない場合にのみ機能することだと思います。つまり、文字列を配列と比較すると機能する可能性があります。2 つの配列の和集合を比較する必要があるので、だれかアイデアがありますか?