`
peryt
  • 浏览: 55723 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论
  • waiting: 既然都指定了dataType为'script'那就不必特别在b ...
    jQuery

如何把需要在project中多处用到的功能或者方法封装成plug-in

阅读更多
例如在一个项目中,多处用到了搜索数据库中多个column的功能:

class Post < ActiveRecord::Base
has_many :comments
def self.search(query, fields, options = {})
find :all, options.merge(:conditions => [[fields].flatten.map {|f| "LOWER(#{f}) LIKE :query"}.join (' OR '),
{:query => "%#{query.to_s.downcase}%"}])
end
end

你在多个model中需要重复用到这段代码和逻辑,就可以将其封装成一个plugin,其步骤如下:

a. ruby script/generate plugin active_record_search
这个命令将自动创建一个空白的plugin 需要的数个文件

b. 然后进入 vender/plugin/active_record_search/lib 目录下,修改active_record_search.rb:
module ActiveRecordSearch
def search(query, fields, options = {})
find :all, options.merge(:conditions => [[fields].flatten.map {|f| "LOWER(#{f}) LIKE :query"}.join (' OR '),
{:query => "%#{query}%"}])
end
end

c. 在vender/plugin/active_record_search/ 这个目录下有一个init.rb 文件中,加入如下的代码,使active_record_search成为ActiveRecord::Base的基本功能:
require 'active_record_search'
ActiveRecord::Base.extend ActiveRecordSearch

好了,全部完成了,任何一个项目只要在vender/plugin/ 目录下有了上面那些的文件,则model都会自动有了这个搜索功能。
分享到:
评论

相关推荐

    RCP+Plug-in开发自学教程_RCP+Plug-in开发自学教程_源码

    1. **Plug-in定义**:在Eclipse RCP中,Plug-in是应用程序的基本构建块,它们提供了功能,如用户界面元素、服务或数据处理。每个Plug-in都有自己的生命周期,并通过声明依赖关系与其他Plug-in交互。 2. **Manifest....

    Fat Jar Eclipse Plug-In教程.

    ### Fat Jar Eclipse Plug-In教程详解 #### 一、Fat Jar Eclipse Plug-In简介 **Fat Jar Eclipse Plug-In** 是一个非常实用的Eclipse插件,它能够帮助开发者将Java项目打包成一个包含所有依赖的可执行JAR文件,即...

    AutoCAD 2020 CSharp plug-in.zip

    AutoCAD 2020 CSharp plug-in.zip 文件是一个压缩包,其中包含了开发AutoCAD 2020插件所需的资源和源代码。这个插件是使用C#编程语言编写的,利用.NET Framework与AutoCAD进行交互。让我们深入探讨一下其中涉及到的...

    Flex Builder Plug-in and Adobe

    ### Flex Builder Plug-in and Adobe: An In-depth Exploration In the dynamic world of web development, especially in the realms of Flash and Flex, the integration between Eclipse and Flex Builder has ...

    RCP_Plug-in开发自学教程(CEC首发)

    1. **插件(Plug-in)**:是RCP中的基本单元,每个插件都封装了一组功能。它们之间通过接口通信,可以独立开发和部署。 2. **扩展点(Extension Point)**:定义了插件可以插入的接口,是插件间交互的桥梁。 3. **...

    练习基于FPGA的算术运算逻辑设计和仿真

    1、利用QuartusII的"MegaWizard Plug-In Manager", 设计输入数据宽度是4bit的ADD、SUB、MULT、DIVIDE、COMPARE 把它们作为一个project,DEVICE选用EPF10K70RC240-4,对它们进行 时序仿真, 2、利用QuartusII的...

    Writing an Eclipse Plug-in (Part 1-24)

    在本文中,我们将深入探讨“Writing an Eclipse Plug-in”这一主题,这是一系列教程,旨在指导开发者逐步创建属于自己的Eclipse插件。Eclipse插件是扩展Eclipse集成开发环境(IDE)功能的重要方式,允许用户自定义...

    RCP_Plug-in开发自学教程(1-5章)

    《RCP_Plug-in开发自学教程(1-5章)》是针对Eclipse RCP(Rich Client Platform)和Plug-in开发的学习指南,旨在帮助初学者掌握这一强大的客户端应用程序开发技术。RCP是一种基于Eclipse框架的开发平台,它允许开发者...

    RCP_Plug-in开发自学教程

    1. **插件项目创建**:在Eclipse IDE中,通过“File” -&gt; “New” -&gt; “Plug-in Project”来创建一个新的插件项目。设置项目的ID、名称和版本等基本信息。 2. **插件元数据**:`.plugin.xml`文件用于定义插件的元...

    如何使用Fat Jar Plug-in打包java可执行程序

    总结,本文介绍了Fat Jar的概念、使用Fat Jar Plug-in打包Java可执行程序的方法,以及在Linux环境中使用`nohup`命令启动Java后台服务的技巧。通过这些知识,你可以更方便地管理和部署Java应用程序。

    Complete VS2008-Setup-Project with Add-In for Feature-SelectionTree

    【标题】"Complete VS2008-Setup-Project with Add-In for Feature-SelectionTree" 涉及的是一个完整的Visual Studio 2008安装项目,该项目包含了一个用于功能选择树的Add-In(插件)。这个解决方案为开发者提供了一...

    freemaster 的使用说明

    - 在“Comm”设置中,选择“Plug-in Module”下的“FreeMASTER BDM Communication Plug-in (CortexM, PowerPC, HCS08/12, ColdFire)”选项。 - 点击“Configure…”按钮,并在弹出的窗口中选择“BDM cable ...

    Eclipse.Plug-ins.Third+Edition(英文版)

    2. **Plug-in Developer Guide (PDG)**:Eclipse提供了PDG,它是一份详尽的指南,帮助开发者理解Eclipse插件开发的基本概念和步骤。PDG包括了创建、运行、调试和发布插件的所有信息。 3. **PDE工具**:PDE是Eclipse...

    添加Microsoft Visual Studio 解决方案平台PPAPI、NACL、PNACL等的插件

    在项目模板中选择“VSIX Project”,这将为你创建一个基本的扩展结构。 5. 在项目中添加对PPAPI、NACL和PNACL库的引用。这可能涉及到修改项目文件(如.csproj)来包含外部库的路径。 6. 编写扩展代码,这包括自定义...

    每天分享几个python项目 —— simple-quiz-system-project-in-python

    总之,“simple-quiz-system-project-in-python”是一个涵盖多个Python核心概念的实践项目,它将带你深入了解Python的实用性和灵活性。动手尝试并完善这个项目,你会发现自己的编程技能在不知不觉中得到了显著提升。

    SVN-EclipsePlug-1.2.2.rar

    为了在Eclipse中实现SVN的功能,就需要安装SVN插件。SVN-EclipsePlug-1.2.2就是这样一个插件,它允许开发者在Eclipse中直接进行版本控制操作,包括代码的提交、更新、比较、解决冲突以及查看项目历史等。 在Eclipse...

    DelphiXE10.3封装http-get-post成dll及调用

    在IT行业中,开发人员经常需要将特定功能封装到动态链接库(DLL)中,以便于在不同的项目中重用代码。本主题聚焦于如何在DelphiXE10.3环境中,将HTTP GET和POST请求封装到DLL,并在独立的EXE程序中调用这些功能。...

    Add-in Express Version 8.1 Release (build 1432) - 10.2 Tokyo

    基于Microsoft Office的开发,Add-in Express提供了一组用于创建Microsoft Office插件的组件。与所有Microsoft Office程序交互的所有必需技术包:Microsoft Outlook,Excel,Word,Visio,Microsoft Project,...

Global site tag (gtag.js) - Google Analytics