使用变量AND或'构建ActiveRecord finder的最佳方法;s

使用变量AND或'构建ActiveRecord finder的最佳方法;s,activerecord,Activerecord,使用Rails3,我需要构造一个查找器,该查找器包含不同数量的比较,动态确定,与相关多个关联中的值进行比较,使用AND或or语句,并且AND或or也是动态确定的 假设我有一个foo,它有许多条,条有一个属性baz,我想找到所有有一个相关条的foo,其中baz=某个_值或另一个_值,等等,比较的数量事先不知道。我知道我能做到: Foo.joins(:bars).where(:bars => {:baz=>"Find Me"}) 或者,使用字符串: Foo.joins(:bars).w

使用Rails3,我需要构造一个查找器,该查找器包含不同数量的比较,动态确定,与相关多个关联中的值进行比较,使用AND或or语句,并且AND或or也是动态确定的

假设我有一个foo,它有许多条,条有一个属性baz,我想找到所有有一个相关条的foo,其中baz=某个_值或另一个_值,等等,比较的数量事先不知道。我知道我能做到:

Foo.joins(:bars).where(:bars => {:baz=>"Find Me"})
或者,使用字符串:

Foo.joins(:bars).where("bars.baz = ?", a_value)

似乎获得我想要的最好方法是动态构造用作第二个示例的第一个参数的字符串。这是真的吗?我没有看到任何允许我提供额外连接的东西……在这里,我可以指定and或or。如果可以的话,那么只需迭代可能匹配的数组和每个值的一个语句,但我很确定这是不可能的,我最好的选择是动态字符串作为第二个示例中的第一个参数。另外,我知道我可以做一个IN,但那只对OR有用,而不是对AND和谢谢

我有一个半工作的原始策略实现,这意味着我正在构造一个字符串,它将作为第一个参数传递给where方法。然而,出现了一个新的问题,即您似乎无法使用其中指定的where链接多个联接,或者至少我没有得到生成的sql中包含的第二个where,这使得这种方法完全无用。发布关于此链接的单独问题,以回答更详细但基本相同的问题