我有以下查询:
Event.where.has { (status == 'active')}
我希望能够将字符串传递给查询,例如string = "(status == 'active')"
,而不是将其写入实际语句中。
我怎么能这样做?
我尝试在String.interpolate {string}
语句中使用Event.where.has
,但它产生了错误。
答案 0 :(得分:0)
将String
评估为Ruby代码通常是个坏主意。
你可以通过使用lambdas来实现类似的东西。
func = ->() { status == 'active' }
Event.where.has(&func)
但如果你真的想使用String
,可以使用eval
。请记住,这将使您对注入攻击持开放态度,并使您的代码更难理解。
string = "(status == 'active')"
Event.where.has { eval(string) }