트랙 수는 쉼표로 구분 된 4 개의 문자열로 구성되어 있으며 원하는 수만큼 검색 할 수 있어야합니다.배열이있는 쿼리와 비슷합니다.
Track.first.genre => "Alternative, Lite Rock, Indie Rock, Psychedelic"
Track.first.mood => "Aggressive, Angry, Dark, Driving, Energetic, Heavy"
Track.first.tempo => "Fast, Medium"
Track.first.artist => "something"
사용자는 표시되는 트랙 목록의 범위를 좁히기 위해 임의의 개수의 용어를 사용할 수 있습니다. 각 열과 일치하는 배열로 용어를 수집합니다. 예 :
genres = params[:genre].split(",")
moods = params[:mood].split(",")
등등. 따라서 genres => [ "Rock", "Alternative"] 인 경우 장르 열의 해당 용어 중 하나를 포함하는 모든 트랙과 일치하며 모든 추가 용어는 해당 반환 배열에서 선택합니다. 열.
이 작업을 수행하는 가장 좋은 방법은 무엇이며 어떻게 배열을 조건으로 사용하여 where 쿼리를 작성합니까?
엔티티와 관계를 재평가해야 할 필요가 있다고 생각합니다. 장르/분위기/템피가 트랙과 다 대다 관계를 갖고있는 것으로 보입니다. –
@PlatinumAzure - 트랙 모델의 모든 속성입니다. 원래 각각은 하나의 문자열이 될 것이지만, 클라이언트는 이후 내 ("genre in (?)"장르) 쿼리를 사용할 수 없도록 여러 열을 각 열에 추가했습니다. – aperture
나는 (트랙 모델의 속성이되는) 디자인이 아마도 다시 고쳐질 필요가 있다고 말하고 있습니다. 그들은 그들 자신의 모델이어야한다. 나중에 고마워 할거야. –