Rails中都是返回的单个模型的对象,怎么返回多个表中的指定字段则没做什么介绍。
在实际的工作中不可能只是返回单个表的模型,于是GOOGLE下,发现find_by_sql方法的返回中已经包含了查询的字段信息。
table A
id Integer
name String
table B
id Integer
age Integer
a_id Integer
@as = A.find_by_sql("select a.name,b.age from A a,B b where a.id = b.a_id")
puts @as.class #Array
puts @as[0].class #A
puts @as[0].inspect # #<A name:\"test\">
puts "name:" << @as[0].name # test
puts "age:" << @as[0].age # 11
#虽然查询结果类型是A,但仍然可以直接调用类型A中没有的age方法取得值
这样就可以不用受到单个模型类的约束,自由使用sql语句。
而返回结果列表中的单个元素作为一个map对象进行取值。