0

私は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
4

2 に答える 2

2

このスコープを試す

scope :by_labels, lambda{ |tags| joins(:tags).where('tags.label IN (?)',tags) unless tags.blank? }
于 2012-04-05T13:39:54.787 に答える
1

このようなものが動作するはずです:

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). その部分は必要ありません。

于 2012-04-05T13:37:52.977 に答える