1

ActiveRecord モデルで使用できるメソッドを拡張する gem を作成しようとしています。この時点で、それは非常にシンプルで、この質問にリストされている手順に従って、3 つのファイルのみで構成されています: Rails extends ActiveRecord::Base and using Railties to self-initilize.

my_gem.rb

require 'my_gem/railtie' if defined? ::Rails::Railtie

my_gem/railtie.rb

require 'my_gem/extensions'
module MyGem
  class Railtie < ::Rails::Railtie
    initializer "my_gem.extensions" do
      ActiveSupport.on_load(:active_record) do
        ActiveRecord::Base.send :include, Extensions
      end 
    end
  end
end

my_gem/extensions.rb

module MyGem
  module Extensions
    extend ActiveSupport::Concern

    module ClassMethods

      def in_the_past_x_days x = 14
        where("#{self.table_name}.created_at > ?", x.days.ago)
        .group("DATE(#{self.table_name}.created_at)")
      end

    end
  end
end

ただし、これを呼び出そうとすると、「NoMethodError」が発生しますin_the_past_x_days。明らかな何かが欠けていますか?

アップデート

詳細については、回答を参照してください。

4

1 に答える 1

0

この gem は、適切に更新されていない開発中の別の gem の機能を補完するために構築されていました (ローカル ファイルを参照するには、github アドレスを使用して親で gem を指定する必要がありました)。

于 2013-10-14T21:59:14.137 に答える