为 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 method
goodbye' for User”始终显示.
我终于搞清楚了两个主要问题:
- 我需要 Railtie 将此 gem 与我的 rails 应用集成。您可以在此处找到指导:https://api.rubyonrails.org/classes/Rails/Railtie.html
- 我在 gem 中修复代码后忘记重建和 运行 捆绑包更新(初学者错误,但卡住了将近一天)
我正在尝试为我的 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 method
goodbye' for User”始终显示.
我终于搞清楚了两个主要问题:
- 我需要 Railtie 将此 gem 与我的 rails 应用集成。您可以在此处找到指导:https://api.rubyonrails.org/classes/Rails/Railtie.html
- 我在 gem 中修复代码后忘记重建和 运行 捆绑包更新(初学者错误,但卡住了将近一天)