ActiveRecord里不需要对应表的Model类

有的时候我们有这种需求,要从很多表中各取出几个字段,作为一个记录类型显示。这时候就不能简单的建一个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



Posted in Rails, Ruby Tagged with: , , , , ,

无觅相关文章插件,快速提升流量