我是Ruby on Rails的新手,如果我的问题太明显,请原谅我。 根据我对数据库的了解,我无法执行以下操作,但最近我没有使用此域。
我想做的是以下内容:
我有一张名为患者的餐桌,其中包括田野,疾病和城市。
我想实现以下查询:
Patient.select(city:"Paris")
我可以将表的名称设置为此select语句的变量吗?
谢谢
答案 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