有的时候我们有这种需求,要从很多表中各取出几个字段,作为一个记录类型显示。这时候就不能简单的建一个Model类来查询了。
可以参考下面的方法实现。不多说,直接上代码。
class PathInfo < ActiveRecord::Base def self.columns @columns ||= []; end def self.column(name, sql_type = nil, default = nil, null = true) columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null) end column :course_name, :string column :grade_name, :string column :book_name, :string column :unit_name, :string column :lesson_name, :string column :grade, :string end
下面是使用的例子:
sql = <<SQL SELECT distinct c.grade,c.course_name,g.grade_name,b.book_name,u.unit_name,l.lesson_name FROM books b,courses c,grades g ,units u, lessons l ,lesson_docs ld where b.grade_id = g.id and g.course_id = c.id and u.book_id = b.id and l.unit_id = u.id and ld.lesson_id = l.id and ld.doc_id = #{docid} SQL #puts sql p = PathInfo.find_by_sql(sql).first