Ticket
모델의 모델은 has_many :tags
입니다. tag.label
이 문자열 배열에있는 태그가있는 티켓을 모두 찾고 싶습니다.모델을 자식으로 필터링하기
tags = params[:tags].split(',')
if tags.count > 0 then
t = t.scoped(include: :tag).where('tags.label' => tags.map(&:label))
end
Ticket
모델의 모델은 has_many :tags
입니다. tag.label
이 문자열 배열에있는 태그가있는 티켓을 모두 찾고 싶습니다.모델을 자식으로 필터링하기
tags = params[:tags].split(',')
if tags.count > 0 then
t = t.scoped(include: :tag).where('tags.label' => tags.map(&:label))
end
뭔가 작동합니다 : 여기
내가 순간에 노력하고있어입니다Ticket.joins(:tags).where(:tags => { :label => array_of_strings })
또는 범위로 :
scope :by_labels, lambda { |tags| joins(:tags).where(:tags => { :label => tags }) unless tags.blank? }
미하일의 문제 Nikalyukin의 해답은 .map(&:label)
입니다. 그 부분은 필요하지 않습니다. `: (레이블) 'tags.label'=> tags.map (&) 어디에요 :
내가이`t = t.scoped (: 태그 포함)를 시도했습니다
scope :by_labels, lambda{ |tags| joins(:tags).where('tags.label IN (?)',tags) unless tags.blank? }
이 범위를보십시오 –