没有模型方法的带有类型转换的通用find_by_sql

时间:2017-01-27 15:57:27

标签: ruby-on-rails activerecord

我想对我的数据库运行任意查询。现在我总是诉诸find_by_sql以确保将结果转换为正确的类型。这种方法的缺点是有时候Rails模型有相关的方法。如果模型中存在find_by_sql方法返回的字段,则使用模型的方法。

另一种方法是使用ActiveRecord::Base.connection.executeModel.connection.execute。悬停该方法返回的结果未正确映射到ruby对象。例如,DateTime对象作为字符串返回,而不是真正的ruby对象。

你会怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用find_by_sql,但可以通过调用[:colum_name]代替.column_name来获取真实数据库。

示例:

q = Question.find_by_sql('select * from questions limit 1').first

q.title
=> "1"

q[:title] 
=> "How to convert MagicaVoxel to vector?"