Ruby on rails 在何处使用数组进行like查询

Ruby on rails 在何处使用数组进行like查询,ruby-on-rails,Ruby On Rails,我有一个跟踪模型,有4列逗号分隔的字符串值,需要通过任意数量的术语进行搜索 e、 g 然后,用户可以使用任意数量的术语来缩小显示曲目的列表。我正在将术语收集到与每列匹配的数组中。e、 g genres = params[:genre].split(",") moods = params[:mood].split(",") 等等。因此,如果genres=>[Rock,Alternative],这将匹配包含genre列中的任何一个术语的所有曲目,所有附加术语将从返回的数组中进行选择,依此类推4列中

我有一个跟踪模型,有4列逗号分隔的字符串值,需要通过任意数量的术语进行搜索

e、 g

然后,用户可以使用任意数量的术语来缩小显示曲目的列表。我正在将术语收集到与每列匹配的数组中。e、 g

genres = params[:genre].split(",")
moods = params[:mood].split(",")
等等。因此,如果genres=>[Rock,Alternative],这将匹配包含genre列中的任何一个术语的所有曲目,所有附加术语将从返回的数组中进行选择,依此类推4列中的每一列


这样做的最佳方式是什么?我如何用类似数组的条件写“哪里查询”?

< P> >考虑使用类型、语气和节奏的模型。ActiveRecord将使涉及这些内容的查询变得更加容易

^声明可以为您节省一些翻译时间

^您可以通过where调用搜索所需的数组元素,例如:

class Track < ActiveRecord::Base
  def self.for_genre(name)
    where "genre like '%#{name}%'"
  end
end

这意味着选择的名称不是其他名称的子字符串。

我认为您可能需要重新评估您的实体和关系。。。似乎流派/情绪/节奏与音轨有着多对多的关系。@PlatinumAzure-这些都是音轨模型的属性。最初,每个都是一个字符串,但是客户端在每个列中添加了多个字符串,从而使我的流派在“流派查询”中无法使用。我是说,您的设计可能需要重新修改轨迹模型的这些属性。他们应该成为自己的榜样。稍后您会感谢我。同意PA。一旦客户添加了多个流派的需求,正确的解决方案就是将这种关系分解为多对多,并在他们自己的表格中列出流派。
class Track < ActiveRecord::Base
  def self.for_genre(name)
    where "genre like '%#{name}%'"
  end
end