`
ziyoujiedao
  • 浏览: 40993 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

项目中遇到的问题(二)(动态创建MODEL)

阅读更多
在项目中有这么个需求,我们有很多表结构都是一样的,例如: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)
分享到:
评论
2 楼 rain2005 2008-01-16  
想法很好啊,但是没有考虑后期的代码维护啊,如果模型要加逻辑怎么办呢?而且每个模型业务不一样呢?为什么不可以用一个表结构呢?
1 楼 ziyoujiedao 2008-01-15  
怎么都没人来评价下啊,哎~~这个东西不好吗?我觉得很不错的啊

相关推荐

    Model2模块实现用户注册登录.zip

    在Model2中,通常使用JSP(JavaServer Pages)来创建动态网页。对于用户注册登录,视图层会包含注册表单和登录表单的JSP页面,用于接收用户输入,显示注册或登录的结果,并可能包含一些提示信息,如错误消息或成功...

    jsf动态创建按钮绑定

    在JSF(JavaServer Faces)框架中,动态创建按钮并绑定事件是一项常见的需求,尤其是在构建交互性强、可自定义的用户界面时。JSF提供了一种灵活的方式,允许开发者在运行时根据业务逻辑生成和管理组件,包括按钮。...

    Working Model Basic User’s Manual

    - **运行时错误**:列出了在运行 WMBasic 程序过程中可能遇到的各种错误消息,包括通用错误和特定于 Working Model 的错误。 - **编译错误**:解释了在编译阶段可能出现的问题及相应的错误消息。 - **平台差异**:...

    ASp.net个人项目问题总结(实用)

    以上是ASP.NET个人项目中常见的一些问题和解决方案,实践中可能还会遇到其他挑战,如性能优化、错误处理、权限控制等,都需要根据具体项目需求进行妥善处理。掌握这些技巧和方法,能有效提升项目的开发效率和质量。

    System.ComponentModel.Composition.Initialization.dll

    在Silverlight开发过程中,我们时常会遇到这样一个关键组件——System.ComponentModel.Composition.Initialization.dll。这个动态链接库(DLL)文件是微软.NET Framework中用于实现元数据驱动的组件组合的重要组成...

    翻金币小游戏,二十个关卡,传智教育的qt课程的项目

    1. 游戏界面:利用Qt的QGraphicsView和QGraphicsScene模块,可以创建出动态、交互性强的游戏场景,玩家可以通过鼠标或键盘与游戏中的金币进行交互。 2. 关卡设计:游戏设有20个关卡,每个关卡有不同的布局和挑战,这...

    javaweb项目

    JavaWeb项目是面向初学者的一个综合实践平台,它涵盖了Web开发中的多个重要知识点,包括但不限于前端界面设计、后端逻辑处理、数据库交互以及服务器配置...在这个过程中,遇到问题并解决问题,将对个人的成长大有裨益。

    java-servlet基础练习小项目

    【Java Servlet基础练习小项目】是一个面向初学者的实践教程,旨在帮助学习者掌握Java Servlet技术的...在实践中遇到问题,可以参考相关的Java Servlet教程,以及JDBC和Web开发的文档,以增强理解和解决问题的能力。

    jsp项目开发实录(完整源代码)

    《jsp项目开发实录》是一份...此外,提供视频教程链接,使得学习更加直观,有助于解决实际操作中遇到的问题。通过这样的实录学习,学习者不仅可以提升JSP技术,还能积累实际项目开发经验,为未来的工作打下坚实基础。

    PHP小型smarty项目

    在"PHP小型smarty项目"中,我们可能会遇到以下一系列的知识点: 1. **Smarty模板引擎**: Smarty是PHP的一种模板技术,它提供了一种方式将HTML模板与PHP代码分开,使得程序员可以专注于编写后端逻辑,而设计师则可以...

    网上商城前后端综合项目

    **说明文档TXT**:此文档可能详细解释了项目的开发过程、技术栈的选择、安装部署步骤、使用说明以及可能遇到的问题和解决方案。对于后续的维护和升级,这份文档至关重要。 **TheFirst和TheLast**:这两个文件名可能...

    6-16JavaWeb项目代码

    在ums_mvc项目中,JSP文件通常用于创建用户交互的界面,如登录页面、用户信息展示页面等。 3. **JavaBean**:JavaBean是符合一定规范的Java类,通常用作数据容器,封装了业务逻辑或数据属性。ums_mvc项目中的...

    简单BBS源程序Model1

    在本文中,我们将深入探讨Model1架构、JSP技术以及如何理解和使用这个简单的BBS源代码。 首先,让我们理解什么是Model1架构。在Web应用程序开发中,Model1是一种基本的MVC(模型-视图-控制器)架构变体,主要用于...

    java web项目——51商城

    8. **视频讲解**:如果在步骤上遇到困难,提供视频讲解是一种很好的辅助学习方式,能直观地展示每个步骤的实现过程,帮助开发者解决实际操作中的问题。 这个项目对于学习和实践Java Web开发来说是一份宝贵的资源,...

    北大青鸟 S2 java项目 jsp项目 品红项目 手机家园

    在这个"手机家园"项目中,学员可能会遇到以下知识点: 1. **Servlet与JSP的交互**:学员需要了解如何通过Servlet来处理HTTP请求,然后将数据传递给JSP页面进行展示,或者从JSP页面接收用户输入并进行业务处理。 2....

    JavaEE项目案例源码

    1. **JSP技术**:JSP是JavaEE的一部分,用于创建动态网页。它允许开发者在HTML页面中嵌入Java代码,使得网页可以根据服务器端的数据进行动态渲染。在这个案例中,JSP文件可能包含了用户界面的布局、表单处理以及与...

    jsp 真实项目实例 j2ee实战开发项目 java实战开发项目

    在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它是Java平台上的一个重要组成部分,特别是对于J2EE(Java 2 Platform, Enterprise Edition)应用来说。本项目实例聚焦于通过JSP进行实际的Web...

    java web期末设计20套项目源码.zip

    【标签】"java web" 进一步确认了这些项目的核心技术,Java Web涵盖了Servlet、JSP(JavaServer Pages)、JavaBeans、JSTL(JavaServer Pages Standard Tag Library)、MVC(Model-View-Controller)架构、Spring...

    《Django实战》源码(第一、第二版) .zip

    《Django实战》这本书是许多Python开发者学习Django框架的重要参考资料。...在实践中遇到问题时,可以参考源码中的解决方案,或者查阅书籍中的相关章节来获取更详细的解释。这将是你提升Django技能的重要步骤。

Global site tag (gtag.js) - Google Analytics