我有一个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)
. 那部分不是必需的。