array타입의 column에서 array로 값을 찾고 싶습니다.
조회수 2382회
아래와 같은 테이블이 있습니다.
Books Table
-----------------------
COLUMN NAME | TYPE
id | integer
name | character varying
subjects | character varying []
subjects가 {education, business, history} 이런식으로 저장되는 array 타입일때
subjects에 {history, business}가 있는지 검색하고 싶습니다.(OR조건으로요, history나 business가 둘중 하나 들어있으면 됨) array타입은 array로 어떻게 검색해야 하나요?
Book.where(subjects: ["hisotyr, business"])는 안되더라구요.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
Book.where(Book.arel_table[:subjects].overlap(['hisotyr', 'business']))
or
Book.where.overlap(subjects: ['hisotyr', 'business'])혹은
Book.where(Book.arel_table[:subjects].contains(['hisotyr', 'business']))
or
Book.where.contains(subjects: ['hisotyr', 'business'])필요에 맞는 걸로 사용하세요. 위의 것은 sql 에서 && 고 아래것은 @> 입니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
- 답변감사합니다! 그런데 NoMethodError: undefined method `overlap' 으로 error가 뜨네요. 그리고 아래 contains도 같은 에러가 뜹니다. ㅠㅠ 알 수 없는 사용자 2016.2.16 17:43
-
댓글 입력