2013-03-12 3 views
0

Я изучаю рубин. Я хотел бы использовать активную запись для использования простой команды find, такой как: MyModel.find_by_emp_id(i.emp_id) на модели, но я не могу использовать камень Vertica, который я использую. Результат набора прямого SQL-запроса для модели выглядит следующим образом: vemployees = conn.query("select * from employees") возвращает хеш-структуру данных. Структурные данные vemployees тип Vertica :: результат, и структура выглядит как ниже:Поиск значений в Ruby Hashes, которые содержат вывод SQL-запроса.

[ 
    {:emp_id=>"3321", :emp_last_name=>"Man", :emp_first_name=>"super", :emp_mid_name=>nil}, 
    {:emp_id=>"3325", :emp_last_name=>"Man", :emp_first_name=>"Bat", :emp_mid_name=>nil}, 
] 

Как я могу выполнить что-то подобное, vemployees.find_by_emp_id (i.emp_id) без прохождения через список Результаты?

ответ

0

N.B. непроверенный код

что-то вроде:

в MyModel:

def self.find_by_emp_id(id) 
    conn.query("select * from employees where emp_id = #{id}")[0] 
end 

Поскольку камень не ActiveRecord вам придется написать свои собственные аксессор, вы не можете полагаться на автомагический созданных методах find_by_ ActiveRecord , Я думаю, вы можете взломать этот драгоценный камень в ActiveRecord и получить всю доброту ActiveRecord, но это, вероятно, больше, чем вы хотели бы стать новичком Ruby.

Будьте внимательны при дезинфекции любого пользовательского ввода ...

 Смежные вопросы

  • Нет связанных вопросов^_^