浏览 3157 次
精华帖 (0) :: 良好帖 (7) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-01-15
但是如果我每个一样的表都去建立一个相应的MODEL,比较浪费,后来找到一个不错的方法,动态的创建MODEL,拿来与大家分享,希望可以帮助到大家。 module Dynamic class << self def klass(table_name) tname = class_name_from_table(table_name) const_missing(tname) rescue NameError define_klass(table_name) end def objeck(table_name) klass(table_name).new end private def class_name_from_table(table_name) Inflector.camelize(table_name) end def define_klass(table_name) tname = class_name_from_table(table_name) class_def = <<-end_eval class #{tname} < ActiveRecord::Base set_table_name('#{table_name}') end end_eval#此处加入到代码后出错,去掉空格后就好了 eval(class_def, TOPLEVEL_BINDING) const_get(tname) end end end 上面这段代码放到libs包下,新建一个ruby module,然后加入以上代码。 使用的时候,如下: table_name = "a" #直接就可以用了,很方便吧 Dynamic.klass(table_name).find(:all) #新建了个对象 Dynamic.objeck(table_name) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-01-16
想法很好啊,但是没有考虑后期的代码维护啊,如果模型要加逻辑怎么办呢?而且每个模型业务不一样呢?为什么不可以用一个表结构呢?
|
|
返回顶楼 | |