私は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
このスコープを試す
scope :by_labels, lambda{ |tags| joins(:tags).where('tags.label IN (?)',tags) unless tags.blank? }
このようなものが動作するはずです:
Ticket.joins(:tags).where(:tags => { :label => array_of_strings })
またはスコープとして:
scope :by_labels, lambda { |tags| joins(:tags).where(:tags => { :label => tags }) unless tags.blank? }
Mikhail Nikalyukin のソリューションの問題は.map(&:label)
. その部分は必要ありません。