我的 Track 模型 has_and_belongs_to_many :moods、:genres 和 :tempos (每一个同样有 has_and_belongs_to_many :tracks)。
我正在尝试构建一个搜索“过滤器”,用户可以在其中指定任意数量的流派、情绪和节奏,这将返回匹配每个过滤程度的任何条件的曲目。
一个示例查询可能是
params[:genres] => "Rock, Pop, Punk"
params[:moods] => "Happy, Loud"
params[:tempos] => "Fast, Medium"
如果我构建一个与所有这些流派匹配的曲目数组,我如何从该数组中选择那些属于任何和所有情绪参数的曲目,然后从第二个数组中选择所有也匹配任何和所有节奏的曲目参数?
我正在构建初始数组
@tracks = []
Genre.find_all_by_name(genres).each do |g|
@tracks = @tracks | g.tracks
end
在哪里genres = params[:genres].split(",")
谢谢。