我想对我的数据库运行任意查询。现在我总是诉诸find_by_sql
以确保将结果转换为正确的类型。这种方法的缺点是有时候Rails模型有相关的方法。如果模型中存在find_by_sql
方法返回的字段,则使用模型的方法。
另一种方法是使用ActiveRecord::Base.connection.execute
或Model.connection.execute
。悬停该方法返回的结果未正确映射到ruby对象。例如,DateTime
对象作为字符串返回,而不是真正的ruby对象。
你会怎么做?
答案 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?"