레일은 내가 DB 테이블 events
을 가지고,이는 SQL -
eg: ["2017-05-19","2018-04-19","2005-04-19","2017-06-19","2015-04-9"]
이 05
을 메신저 해당 월 값을 말한다 같은 날짜의 배열을 저장하는 열 dates
있습니다. 각 이벤트에 대해 dates
열에있는 날짜를 비교하고 달이 정확하게 포함 된 모든 이벤트의 목록을 반환해야합니다. 정확하게는 05
입니다. 그래서 event1과 event2의 날짜가 배열에 05 일 경우 event1과 event2를 반환합니다.
나는 이것을 시도해 혼란스러워했다.
where("dates @> ARRAY[?]::varchar[]", don't_know_what_to_give_here)
와
그렇게 만 설명을 제공 할 수 있습니다. 아무도 응답하지 않으면 나는 나중에 완전한 대답을 할 것입니다. 기본적으로 strptime 메서드를 사용하여 문자열 날짜를 실제 날짜로 변환 한 다음 일치하는 달을 확인할 수 있어야합니다. Strptime doc here : (https://apidock.com/ruby/DateTime/strptime/class) – bkunzi01
답장을 보내 주셔서 감사합니다. 그래, 우리는 strptime을 사용하고 비교해야합니다.하지만 주어진 배열의 모든 이벤트를 통해 이벤트를 처리해야합니다. 비슷한 방식으로 모든 이벤트를 확인하십시오. 하지만 여전히 혼란 스럽습니다. –
미래에 많은 날짜 등이있는 각 이벤트마다 별도의 event_dates 테이블을 만드는 것이 좋습니다. 하지만이 시나리오에서는 psql 배열을 활성 레코드 덕분에 다른 배열 컬렉션처럼 취급 할 수 있습니다. 그러나 모든 객체를 인스턴스화하고 날짜를 확인하기 위해 테이블의 모든 이벤트를 반복하고 싶지는 않습니다. 따라서 '날짜'배열을 스캔하고 자체 배열에 해당 ID를 추가하려면 정규식을 사용할 수 있도록 모든 날짜 및 레코드 ID를 가져 오기 위해 '뽑기'를 사용하는 것이 좋습니다. 그런 다음 id 배열을로드하십시오. @events = Event.where (id : [ids_with_matching_months]) – bkunzi01