如何将字符串传递给ruby ActiveRecord和baby_sequel查询

时间:2017-05-14 04:20:24

标签: ruby activerecord string-interpolation

我有以下查询:

Event.where.has { (status == 'active')}

我希望能够将字符串传递给查询,例如string = "(status == 'active')",而不是将其写入实际语句中。

我怎么能这样做?

我尝试在String.interpolate {string}语句中使用Event.where.has,但它产生了错误。

1 个答案:

答案 0 :(得分:0)

String评估为Ruby代码通常是个坏主意。

你可以通过使用lambdas来实现类似的东西。

func = ->() { status == 'active' }
Event.where.has(&func)

但如果你真的想使用String,可以使用eval。请记住,这将使您对注入攻击持开放态度,并使您的代码更难理解。

string = "(status == 'active')"
Event.where.has { eval(string) }