vkill'blog

“技术本身没有太多价值,掌握了新的思考方式才是真的收获”

rails rake 获取所有model类名

02:04 , vkill
这里主要是为以后做细粒度的权限的时候用,先记录下来


#encoding: utf-8
#rails rake 获取所有model类名
require 'find'
namespace :model do
  desc 'this is auto generate models list'
  task :generate_list => :environment do
    Find.find(Rails.root.join("app/models").to_s) do |path|
      if FileTest.directory?(path)
        if File.basename(path)[0] == ?.
          Find.prune
        else
          next
        end
      else
        require path
      end
    end

    ObjectSpace.each_object(Class) do |k|
      if k.ancestors.include?(ActiveRecord::Base)
        #去掉 ActiveRecord::Base 它自己
        #去掉 虚拟类
        #去掉 单表继承的父类
        if k.name != "ActiveRecord::Base" and k.abstract_class != true
          if k.column_names.include?('type') and k.subclasses.size > 0
            next
          end
          puts k.name
        end
      end
    end
  end
end


2011.11.19 更新:
有个更好的方法,参见 https://github.com/vkill/i18n_attributes 这个gem
Last modified by vkill on2011/11/19 20:24
类别:ruby & rails | Tags: , , , , , | 0 条评论, 1963 次阅读
网友评论(0):
发表评论:

Nickname: 
Email:
Site URI: