原创作者: hideto   阅读:883次   评论:0条   更新时间:2011-05-26    
今天来看看怎样写Rails插件
首先我们生成插件框架:
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 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics