0

我正在学习红宝石。我想使用活动记录来使用这样的简单查找命令:MyModel.find_by_emp_id(i.emp_id)在模型上,但我不能使用我正在使用的 Vertica 数据库 gem。像这样在模型上运行直接 SQL 查询的结果集: vemployees = conn.query("select * from employees") 返回类似哈希的数据结构。数据结构 vemployees 是 Vertica::result 类型,结构如下所示:

[
  {: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) 的操作?

4

1 回答 1

0

注意未经测试的代码

就像是:

在 MyModel 中:

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

由于 gem 不是 ActiveRecord,您必须编写自己的访问器,因此您不能依赖自动创建的 ActiveRecord find_by_ 方法。我认为您可以将该 gem 破解到 ActiveRecord 中并拥有 ActiveRecord 的所有优点,但这可能比您作为 Ruby 初学者想要承担的要多。

小心清理任何用户输入...

于 2013-04-23T15:54:50.967 回答