我们可以使用SQLite3在Ruby中的查询中将db表的名称设置为变量吗?

时间:2015-04-13 19:53:59

标签: mysql ruby-on-rails ruby sqlite

我是Ruby on Rails的新手,如果我的问题太明显,请原谅我。 根据我对数据库的了解,我无法执行以下操作,但最近我没有使用此域。

我想做的是以下内容:

我有一张名为患者的餐桌,其中包括田野,疾病和城市。

我想实现以下查询:

Patient.select(city:"Paris")

我可以将表的名称设置为此select语句的变量吗?

谢谢

3 个答案:

答案 0 :(得分:1)

你可以这样做

table_name = "Patient"
table_name.constantize.select(city:"Paris")

答案 1 :(得分:0)

eval也可以在这里使用:

> object_type = "Patient"
> query = "#{object_type}.select(city:'Paris')"
> eval(query)

答案 2 :(得分:0)

我认为根据你想要传递关系对象的评论。您可以使用scoped方法执行此操作。 Ryan Bates在使用它们时表现出色:http://railscasts.com/episodes/112-anonymous-scopes

在您的情况下,您可以:

scope = Patient.scoped
scope = scope.where(city: "Paris")
# ... other query options perhaps..eg
scope = scope.where(name: "John")
scope = scope.limit(10)
scope.all # => first 10 Patients from Paris named John