代码之家  ›  专栏  ›  技术社区  ›  Neeraj Singh

如何将“has\u man”这样的实时代码方法pll到lib

  •  0
  • Neeraj Singh  · 技术社区  · 15 年前

    下面的代码工作得很好。

    class ApplicationController < ActionController::Base
    rescue_from ActiveRecord::RecordNotFound, :with => :bad_record
    def bad_record
       redirect_to root_url
    end
    

    这就是我想到的,而且很有效。

    class ApplicationController < ActionController::Base
     include RescueFromRecordNotFound 
    end
    \#lib/rescue_from_record_not_found.rb
    module RescueFromRecordNotFound 
     def self.included(base)
      tmp = "rescue_from ActiveRecord::RecordNotFound, :with => :bad_record"
      base.send(:eval,tmp)
      base.send(:include, InstanceMethods)
    end
    module InstanceMethods
      def bad_record
         redirect_to root_url
      end
    

    结束

    这个解决方案有效。但是我真的不太喜欢董伊凡。我想知道是否有更好的方法来实现同样的目标。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Kenny    15 年前

    你试过:

    base.send(:rescue_from, ...)