2015-04-13 3 views
1

Я новичок в Ruby on Rails, так что простите меня, если мой вопрос слишком очевиден. В зависимости от моих знаний о базах данных я не могу сделать следующее, но недавно не работал в этом домене.Можно ли задать имя таблицы db как переменную в запросах в Ruby с помощью SQLite3?

То, что я хочу сделать, это следующее:

У меня есть таблица, которая называется Пациенты, у которой есть поля, болезни и город.

Я хочу реализовать следующий запрос:

Patient.select(city:"Paris") 

Могу ли я установить имя таблицы в качестве переменной для этого оператора выбора?

Спасибо

+0

Значит, вы хотите, чтобы выбрать всех пациентов из города «Париж»? В этом случае вы хотите: Patient.where (город: «Париж») – rainkinz

+0

no Я имею в виду, что я хочу установить в качестве переменной Пациент .. это возможно? ссылаясь на название таблицы – Ectoras

+0

Возможно ли это? var = Пациент, а затем var.select (город: «Париж») – Ectoras

ответ

1

Вы можете сделать это

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

eval может быть использован и здесь:

> object_type = "Patient" 
> query = "#{object_type}.select(city:'Paris')" 
> eval(query) 
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 
Смежные вопросы