在项目中有这么个需求,我们有很多表结构都是一样的,例如:a_table,b_table,c_table
但是如果我每个一样的表都去建立一个相应的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)
分享到:
- 2008-01-15 13:14
- 浏览 1404
- 评论(2)
- 论坛回复 / 浏览 (1 / 3127)
- 查看更多
相关推荐
这是最近写的一个根据数据模型动态创建类也就是MVC中使用的Model的例子,可以在运行时动态生成数据库表对应的MODEL,同时保存为DLL,加载和使用。正在用EF的朋友可以研究下,因为只不过当MODEL数据用,所以我只实现...
初做vue项目中遇到这个问题,记录一下。 源代码: 打算做的表单验证功能。结果发现在验证的过程中username规则的第一条正确了却一直通过不了。 通过控制台得知长度一直为1。原来是拿不到数据。 v-model通常用于...
C# 中动态创建控件及事件处理程序 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data;
JSONExport,快速创建 model 模型, 方便快捷化
看到网上有很多问4.1的Ext desktop与它的MVC架构怎么联系起来,自己准备更新公司系统的Ext 到4.1也遇到这个问题,自己折腾了一天,看了网上很多东东,但看得不是很明白,最后只能自己专研了,悲吹!! Ext4.1 没其他...
1.input 输入框 v-model 绑定的字段名需要根据后台返回的数据动态生成,此时就不可以用 v-model绑定,而是用传统的方法 value 动态绑定,并且用子组件绑定向父组件传递值和事件。 代码如下: //子组件 <input ...
extjs动态生成model、store、panel;sql拼接等多种技术难点
自动生成数据表model的程序,节省编写model类的时间
VS2008下创建了model对话框和modeless对话框,验证了函数CDialog::DoModal(),CDialog::Create(),CWnd::ShowWindow(),CWnd::DestroyWindow()的使用。
动态CGE Model,动态cge模型源码
动态 CGE Model,动态cge模型源码
采用 Model-First 方式创建数据库
项目中常见的建模工具类,可根据自己的不同风格改写代码,创造出属于自己以后可以经常用到搭建项目的工具,希望大家互相分享东西,相互促进,共同学习。
该资源通过Model2(JSP+Servlet+JavaBean)模式实现用户注册登录,展现了模型层(Model)、视图层(View)和控制层(Controller)。
错误描述: 1、保存模型:model.save_weights(‘./model.h5...模型创建后还没有编译,一般是在模型加载前调用model.build(input_shape), 但我通过Dataset将输入已经变为dict格式了,暂时没找这样输入怎么匹配input_shap
BBS论坛,用model1模式的项目,内含数据库.我认为很适合jsp初学者用来练手.
前端项目-tree-model,在JavaScript中操纵和遍历树型结构。
开源项目-jeevatkm-go-model.zip,Go Lang Model Mapper, etc.