为 activerecord 编写宏

Writing macro for activerecord

我正在尝试为我的 ActiveRecord 模型(用户)编写一个新宏。宏将在我自己的 gem 中定义,它称为 Kart。

下面是我的 gem 卡丁车和用户

的实现

kart.rb

require "kart/version"

module Kart
  extend ActiveSupport::Concern

  included do
    def goodbye
      p "Gooooood"
    end
  end
end

ActiveSupport.on_load :active_record do
  ActiveRecord::Base.send :include, Kart
end

user.rb

class User < ApplicationRecord
  goodbye # this is my macro, simply print "Goodbye"
end

据我了解,当我 运行 "rails c" 时,"Gooooood" 将打印在控制台中,但错误消息“method_missing': undefined local variable or methodgoodbye' for User”始终显示.

我终于搞清楚了两个主要问题: