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
。明らかな何かが欠けていますか?
アップデート
詳細については、回答を参照してください。