原创作者: hideto
阅读:883次
评论:0条
更新时间:2011-05-26
今天来看看怎样写Rails插件
首先我们生成插件框架:
我们生成了一个名为active_record_search的插件,我们希望给每个Model添加一个search方法,用来在多个fields中search某一string
vendor/plugins/active_record_search/lib/active_record_search.rb:
这样就写好了library,我们再改写init.rb来加载该插件,因为init.rb是Rails程序初始化过程的最后一步要执行的程序
学习写插件最好的方式是看看已有的插件
Rails Wiki有一个插件列表:http://wiki.rubyonrails.org/rails/pages/Plugins
Rails核心开发人员也有一个插件列表:http://dev.rubyonrails.org/svn/rails/plugins/
首先我们生成插件框架:
ruby script\generate plugin active_record_search
我们生成了一个名为active_record_search的插件,我们希望给每个Model添加一个search方法,用来在多个fields中search某一string
vendor/plugins/active_record_search/lib/active_record_search.rb:
# Adds a search method to query your ActiveRecord models module ActiveRecordSearch # Query your ActiveRecord models. # # Post.search 'foo', [:title, :summary] # => [#<Post>, #<Post>, #<Post>] # def 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
这样就写好了library,我们再改写init.rb来加载该插件,因为init.rb是Rails程序初始化过程的最后一步要执行的程序
require 'active_record_search' ActiveRecord::Base.extend ActiveRecordSearch
学习写插件最好的方式是看看已有的插件
Rails Wiki有一个插件列表:http://wiki.rubyonrails.org/rails/pages/Plugins
Rails核心开发人员也有一个插件列表:http://dev.rubyonrails.org/svn/rails/plugins/
评论 共 0 条 请登录后发表评论